Работа с архивами в Linux входит в базовый набор: бэкапы, передача файлов, экономия места на диске. Ниже разобраны основные утилиты и типичные сценарии: tar и zip, gzip/bzip2, шифрование через gpg, синхронизация rsync и запуск по cron.
tar: архивация и сжатие
tar собирает каталоги в один файл и при необходимости сразу сжимает через gzip, bzip2 или xz. Это стандарт для логов, конфигов и выгрузок.
Создание архива
tar -cvf archive_name.tar /path/to/directory
-cсоздать архив-vпоказывать ход работы-fимя выходного файла
Архив со сжатием gzip
tar -czvf archive_name.tar.gz /path/to/directory
Флаг -z включает gzip. Для bzip2 используют -j, для xz: -J.
Распаковка
Обычный tar:
tar -xvf archive_name.tar
Сжатый gzip:
tar -xzvf archive_name.tar.gz
Чтобы положить файлы в конкретный каталог, добавьте -C /path/to/dest.
zip и unzip
Формат zip удобен при обмене с Windows и macOS. Для каталога нужна рекурсия:
zip -r archive_name.zip /path/to/directory
-rобход вложенных каталогов
Распаковка:
unzip archive_name.zip
В нужный каталог: unzip archive_name.zip -d /path/to/dest.
gzip и gunzip
gzip сжимает один файл (не каталог) и по умолчанию заменяет исходник на .gz.
gzip file.txt
Получится file.txt.gz. Обратно:
gunzip file.txt.gz
Чтобы оставить оригинал, используйте gzip -k file.txt (где поддерживается).
bzip2 и bunzip2
bzip2 часто даёт чуть лучшее сжатие, чем gzip, ценой большей нагрузки на CPU. Синтаксис похож:
bzip2 file.txt
Результат: file.txt.bz2.
bunzip2 file.txt.bz2
Архив с шифрованием (gpg)
Если архив уходит по незащищённому каналу, его можно сразу зашифровать симметричным ключом через gpg:
tar -czvf - /path/to/directory | gpg -c -o archive_name.tar.gz.gpg
Флаг -c у gpg: симметричное шифрование, пароль запросят интерактивно. Расшифровка и распаковка:
gpg -d archive_name.tar.gz.gpg | tar -xzvf -
Простой скрипт бэкапа
Пример bash-скрипта: собрать архив с датой в имени и отправить по SCP:
#!/bin/bash DIR="/path/to/directory" BACKUP_NAME="backup_$(date +%F).tar.gz" REMOTE_USER="username" REMOTE_HOST="example.com" REMOTE_DIR="/path/to/backup" tar -czvf "$BACKUP_NAME" "$DIR" scp "$BACKUP_NAME" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"
Кавычки вокруг переменных снижают риск сюрпризов с пробелами в путях. Скрипт удобно повесить на cron (см. ниже).
rsync для синхронизации
Когда нужен не разовый tar, а регулярная синхронизация, удобен rsync: копирует только изменения, умеет SSH и сжатие на лету.
rsync -avz /path/to/directory/ user@remote:/path/to/backup/
-aархивный режим (права, структура, ссылки)-vподробный вывод-zсжатие при передаче
Слэш в конце исходного пути влияет на то, копируется ли содержимое каталога или сам каталог. Для dry-run добавьте -n.
Автоматизация через cron
Планировщик cron запускает скрипты по расписанию. Редактор заданий пользователя:
crontab -e
Ежедневный запуск в 00:00:
0 0 * * * /path/to/backup_script.sh
Имеет смысл писать вывод в лог (>> /var/log/backup.log 2>&1) и проверять код возврата, иначе ошибки бэкапа легко пропустить.
Итого: tar/gzip/bzip2 для упаковки, zip для совместимости, gpg для защиты, rsync для инкрементальной синхронизации, cron для расписания. Этого набора хватает для большинства серверных и локальных задач с архивами в Linux.
