-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmkarch.sh
More file actions
42 lines (34 loc) · 1.04 KB
/
mkarch.sh
File metadata and controls
42 lines (34 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash
while getopts "d:n:" opt; do
case $opt in
d) dir_path=$OPTARG ;;
n) name=$OPTARG ;;
*) echo "Использование: $0 -d <dir_path> -n <name>"; exit 1 ;;
esac
done
if [ -z "$dir_path" ] || [ -z "$name" ]; then
echo "Необходимо указать путь к каталогу и название архива"
exit 1
fi
# Генерация bash скрипта
cat > "$name" <<'EOF'
#!/bin/bash
unpackdir=""
while getopts "o:" opt; do
case $opt in
o) unpackdir=$OPTARG ;;
*) echo "Использование: $0 [-o unpackdir]"; exit 1 ;;
esac
done
if [ -z "$unpackdir" ]; then
echo "Распаковка в текущий каталог..."
tar -xzf "$0"
else
echo "Распаковка в $unpackdir..."
tar -xzf "$0" -C "$unpackdir"
fi
EOF
# Упаковка каталога в tar архив и сжатие
tar -czf - "$dir_path" | cat - > "$name"
chmod +x "$name"
echo "Архивация и создание скрипта $name завершены."