`7z` — это архиватор с высокой степенью сжатия, использующий формат .7z. В Linux доступен через пакет p7zip (и его вариации).
Для большинства дистрибутивов установка выполняется стандартными средствами:
sudo apt update sudo apt install p7zip-full p7zip-rar
sudo dnf install p7zip p7zip-plugins
sudo pacman -S p7zip
7z a archive.7z file1 file2 folder/
7z x archive.7z
7z l archive.7z
7z t archive.7z
7z a -pSECRET archive.7z file1
7z a -pSECRET -mhe=on archive.7z file1
Параметр `-mhe=on` включает скрытие структуры архива (имена файлов также зашифрованы).
Ключ | Назначение |
---|---|
-a | Добавить в архив |
-x | Извлечь с полным путём |
-e | Извлечь без структуры каталогов |
-t<type> | Указать тип архива (7z, zip, tar и др.) |
-p<пароль> | Установить пароль |
-mhe=on | Шифровать структуру архива |
-mx=<0-9> | Степень сжатия (0 — нет, 9 — макс.) |
-r | Рекурсивно (вложенные папки) |
7z поддерживает множество форматов: zip, tar, gzip, bzip2, xz, iso, rar (только распаковка) и др.
Распаковка `.zip`:
7z x archive.zip
Создание `.tar.7z`:
tar cf - folder/ | 7z a -si archive.tar.7z
Распаковка `.tar.7z`:
7z x archive.tar.7z tar xf archive.tar
После архивации рекомендуется тестировать архив:
7z t archive.7z
Ошибки будут выведены в консоль.
7z a -mx=9 -pMySecret -mhe=on backup.7z /home/user/documents
7z a -mx=9 backup.7z /etc 2>&1 | tee /var/log/backup_7z.log
find /var/log -name "*.log" | xargs 7z a logs.7z
Файл: `/usr/local/bin/backup_home.sh`
#!/bin/bash set -e # Параметры SRC="/home" DST="/backup" DATE=$(date +"%Y-%m-%d") ARCHIVE="home_backup_$DATE.7z" LOG="/var/log/7z_home_backup.log" PASSWORD="MySecretPass" # Создание директории mkdir -p "$DST" # Архивация 7z a -mx=9 -p"$PASSWORD" -mhe=on "$DST/$ARCHIVE" "$SRC" >> "$LOG" 2>&1 echo "[$(date)] Backup completed: $DST/$ARCHIVE" >> "$LOG"
0 2 * * * /usr/local/bin/backup_home.sh
(Запуск ежедневно в 2:00 ночи)
Файл: /usr/local/bin/backup_etc_logs.sh
#!/bin/bash set -e DATE=$(date +"%Y-%m-%d") DST="/backup" mkdir -p "$DST" 7z a -mx=9 "$DST/etc_$DATE.7z" /etc > /var/log/7z_etc.log 2>&1 7z a -mx=9 "$DST/logs_$DATE.7z" /var/log > /var/log/7z_logs.log 2>&1
0 3 * * 0 /usr/local/bin/backup_etc_logs.sh
(Каждое воскресенье в 3:00)
#!/bin/bash set -e DATE=$(date +"%Y-%m-%d") DST="/backup/mysql" mkdir -p "$DST" # Дамп базы данных mysqldump -u root -pMyPassword mydb > "$DST/db_$DATE.sql" # Архивируем 7z a -mx=9 "$DST/db_$DATE.7z" "$DST/db_$DATE.sql" # Удаляем исходный файл rm "$DST/db_$DATE.sql"
0 1 * * * /usr/local/bin/backup_mysql.sh