Резервное копирование папки в Linux через tar: сжатие в Gzip и Bzip2
Зачем использовать утилиту tar для создания бэкапов
В операционных системах Linux архиватор tar (Tape Archive) является стандартом де-факто для создания бэкапов. В отличие от обычного копирования файлов, утилита tar бережно сохраняет все метаданные операционной системы: права доступа (chmod), владельцев файлов (chown), скрытые конфигурационные файлы (dotfiles) и символические ссылки, объединяя их в один компактный архивный файл.
Сравнение алгоритмов сжатия Gzip и Bzip2
| Алгоритм | Флаг tar | Расширение | Скорость | Степень сжатия | Когда использовать |
|---|---|---|---|---|---|
| Gzip | -z | .tar.gz | Очень высокая | Средняя | Стандартный выбор: быстрые ежедневные бэкапы сайтов и баз. |
| Bzip2 | -j | .tar.bz2 | Медленнее | Высокая | Долговременные архивы для максимальной экономии диска. |
Пошаговое создание и проверка бэкапов
Шаг 1: Создание быстрого бэкапа со сжатием Gzip (.tar.gz)
Создадим бэкап папки сайта /var/www/my_site с добавлением текущей даты в имя архива:
sudo tar -czvf backup_site_$(date +%Y-%m-%d).tar.gz /var/www/my_siteРазбор флагов:
-c(Create) — создать новый архив.-z(gzip) — сжать архив с помощью алгоритма Gzip.-v(Verbose) — показывать список упаковываемых файлов на экране.-f(File) — имя создаваемого файла архива (всегда ставится последним перед именем).
Шаг 2: Создание архива с максимальным сжатием Bzip2 (.tar.bz2)
sudo tar -cjvf heavy_backup_$(date +%Y-%m-%d).tar.bz2 /var/logШаг 3: Исключение ненужных папок и кэша из архива (--exclude)
Чтобы не раздувать бэкап временными файлами, кэшем и тяжелыми папками зависимостей (например, node_modules или cache), добавьте флаг исключения:
sudo tar --exclude='/var/www/my_site/cache' --exclude='*.log' -czvf clean_backup.tar.gz /var/www/my_siteШаг 4: Просмотр содержимого архива без распаковки (-t)
Убедитесь, что файлы упаковались правильно:
tar -ztvf backup_site_*.tar.gzШаг 5: Восстановление данных из архива (-x)
Распакуем архив в нужную целевую папку с флагом -C:
sudo tar -xzvf clean_backup.tar.gz -C /var/www/restored_site/Типовые ошибки администраторов
- Помещение архива внутрь упаковываемой папки: Если вы находитесь внутри папки
/var/www/siteи создаете архивbackup.tar.gzпрямо в ней, tar попытается упаковать свой собственный растущий архивный файл, что вызовет ошибку «file changed as we read it» и переполнение диска. - Относительные пути против абсолютных: При создании бэкапа с абсолютным путем
/var/wwwtar автоматически удаляет ведущий слеш/(выводя сообщение «Removing leading '/' from member names»). Это сделано для безопасности, чтобы при распаковке случайно не перезаписать системные файлы в корне диска.
ITSTM внедрит инкрементальные бэкапы с дедупликацией (Restic / BorgBackup), сквозным шифрованием и ежедневной проверкой целостности восстановления.
Частые вопросы (FAQ)
Как распаковать архив .tar.bz2?
Используйте флаг -j вместо -z: tar -xjvf archive.tar.bz2 -C /целевая/папка/
Какой современный формат сжатия еще эффективнее, чем bzip2?
Формат XZ (флаг -J, расширение .tar.xz). Он обеспечивает самое плотное сжатие данных, но требует больше оперативной памяти и процессорного времени при архивации.
Как оценить реальный размер созданного архива?
Выполните команду: ls -lh backup_*.tar.gz или du -sh backup_*.tar.gz.
Сохраняет ли tar права доступа к файлам при распаковке?
Да, если распаковка выполняется с правами суперпользователя (sudo), tar восстанавливает оригинальных владельцев (UID/GID) и права (chmod) файлов.