Статьи

Управление архивами в Linux: полное руководство по tar

Полное руководство по работе с tar в Linux: как архивировать и разархивировать папки через bash. Рассмотрены основные ключи, форматы сжатия, исключения файлов и практические примеры для администраторов сайтов

sqlka.ruОпубликовано: Чтение: 5 мин.
Управление архивами в Linux: полное руководство по tar

Команда tar — один из самых востребованных инструментов для работы с архивами в операционных системах семейства Linux. Она используется для упаковки файлов и папок, создания резервных копий, переноса данных между серверами и восстановления информации. В этой статье разберём основные приёмы работы с tar: от простого архивирования до тонкой настройки параметров сжатия и выборочного извлечения данных.

Почему tar, а не zip или rar?

Утилита tar изначально создавалась для ленточных накопителей (Tape ARchiver), но сегодня она прочно вошла в арсенал системных администраторов. Главные преимущества: сохранение прав доступа, символических ссылок, структуры каталогов, а также возможность комбинирования с современными алгоритмами сжатия (gzip, bzip2, xz). В отличие от zip, tar не сжимает файлы по умолчанию, а только упаковывает, что даёт гибкость в выборе алгоритма сжатия.

Базовый синтаксис команды tar

tar [ключи] [имя_архива] [файлы_или_папки]

Основные ключи, которые встречаются в большинстве сценариев:

  • -c — создать архив (create)
  • -x — извлечь архив (extract)
  • -f — указать имя файла архива
  • -v — подробный вывод (verbose)
  • -z — использовать сжатие gzip
  • -j — использовать сжатие bzip2
  • -J — использовать сжатие xz
  • -t — просмотреть содержимое архива без распаковки

Создание архивов: основные варианты

Обычный tar-архив без сжатия

tar -cf backup.tar /home/user/public_html

Команда создаст архив backup.tar, содержащий всю папку public_html. Такой архив занимает столько же места, сколько и исходные данные, но его можно быстро создать и распаковать.

Архив со сжатием gzip (tar.gz)

Наиболее популярный вариант для бэкапов сайтов:

tar -czf backup.tar.gz /home/user/public_html

Ключ -z активирует сжатие алгоритмом gzip. Файл получается существенно меньше, а скорость сжатия остаётся высокой. Обычно расширение таких архивов — .tar.gz или .tgz.

Максимальное сжатие с xz (tar.xz)

Если важна экономия дискового пространства, а время сжатия не критично:

tar -cJf backup.tar.xz /home/user/public_html

Алгоритм xz обеспечивает наилучшую степень сжатия, но требует больше времени и оперативной памяти. Идеален для долгосрочного хранения.

Сжатие bzip2 (tar.bz2)

Золотая середина между размером и скоростью:

tar -cjf backup.tar.bz2 /home/user/public_html

Исключение файлов и папок из архива

Часто при бэкапе сайта нет необходимости включать кеш, временные файлы или папки с большими медиаданными. Для исключения используется ключ --exclude.

tar -czf backup.tar.gz /home/user/public_html \
  --exclude="public_html/bitrix/cache" \
  --exclude="public_html/bitrix/managed_cache" \
  --exclude="public_html/upload/tmp"

Можно вынести список исключений в отдельный файл:

tar -czf backup.tar.gz -X exclude-list.txt /home/user/public_html

Файл exclude-list.txt содержит по одному шаблону на строку.

Просмотр содержимого архива без распаковки

Перед тем как извлекать данные, полезно убедиться в их наличии:

tar -tf backup.tar.gz

Если добавить ключ -v, вывод станет более детальным (права, владельцы).

Для просмотра только определённых файлов можно использовать grep:

tar -tf backup.tar.gz | grep "bitrix"

Распаковка архивов

Извлечение в текущую папку

Для распаковки tar-архива используется ключ -x. Тип сжатия определяется автоматически (gzip, bzip2, xz) при использовании соответствующих ключей, но современные версии tar умеют определять формат по расширению, поэтому часто достаточно:

tar -xf backup.tar.gz

Распаковка в другую папку

Чтобы извлечь архив в определённый каталог, применяется ключ -C:

tar -xf backup.tar.gz -C /var/www/new_site/

Важно: папка назначения должна существовать.

Извлечение только выбранных файлов или папок

Не всегда нужно восстанавливать весь архив. Можно извлечь отдельные элементы:

tar -xf backup.tar.gz home/user/public_html/bitrix/config.php

Путь внутри архива указывается так, как он отображается при просмотре (tar -tf).

Сохранение прав доступа и владельцев

По умолчанию tar сохраняет права доступа, но для восстановления владельцев (uid/gid) требуется запуск от root или использование ключа --same-owner:

sudo tar -xpf backup.tar.gz --same-owner

Ключ -p (или --preserve-permissions) гарантирует сохранение прав доступа, что критически важно для веб-серверов и скриптов.

Добавление файлов в существующий архив

Утилита tar позволяет добавлять новые файлы в уже созданный архив (кроме сжатых, так как они представляют собой единый поток). Для несжатых архивов используется ключ -r:

tar -rf backup.tar newfile.php

Для сжатых архивов такой возможности нет — нужно создавать архив заново.

Автоматизация с помощью bash-скриптов

Для регулярного резервного копирования удобно использовать скрипты. Пример простого скрипта:

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/home/user/backups"
SOURCE="/home/user/public_html"
tar -czf "$BACKUP_DIR/site_$DATE.tar.gz" "$SOURCE" \
  --exclude="$SOURCE/bitrix/cache" \
  --exclude="$SOURCE/bitrix/managed_cache"
echo "Бэкап создан: site_$DATE.tar.gz"

Такой скрипт можно добавить в cron для автоматического выполнения.

Часто встречающиеся ошибки и их решение

  • “Cannot open: No such file or directory” — проверьте существование исходной папки или файла архива.
  • “tar: Removing leading `/' from member names” — tar по умолчанию убирает абсолютные пути для безопасности. Если нужно сохранить полные пути, используйте ключ -P.
  • “tar: Error is not recoverable: exiting now” — часто возникает при повреждении архива или нехватке места на диске.

Рекомендации по выбору формата для бэкапов сайтов

Для ежедневных резервных копий оптимально использовать gzip-сжатие — оно даёт хороший баланс скорости и объёма. При хранении архивов более месяца имеет смысл применять xz для экономии места. Важно всегда проверять целостность созданных архивов (команда tar -tf archive.tar.gz > /dev/null) и хранить копии на отдельном носителе или в облаке.

Освоив работу с tar, вы получаете надёжный инструмент для администрирования серверов, который не зависит от графического интерфейса и работает одинаково на любой Linux-системе. Практикуйтесь с разными ключами, и процесс создания и восстановления архивов станет для вас привычной рутиной.

Хотите освоить SQL для работы с данными?

В SQLka можно изучать SQL последовательно или готовиться к собеседованиям. Запросы выполняются прямо в браузере — устанавливать базу данных не нужно.

sqlka.ru

support@sqlka.ru

← Все статьи