Команда 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-системе. Практикуйтесь с разными ключами, и процесс создания и восстановления архивов станет для вас привычной рутиной.
Команда tar — один из самых востребованных инструментов для работы с архивами в операционных системах семейства Linux. Она используется для упаковки файлов и папок, создания резервных копий, переноса данных между серверами и восстановления информации. В этой статье разберём основные приёмы работы с tar: от простого архивирования до тонкой настройки параметров сжатия и выборочного извлечения данных.
Почему tar, а не zip или rar?
Утилита tar изначально создавалась для ленточных накопителей (Tape ARchiver), но сегодня она прочно вошла в арсенал системных администраторов. Главные преимущества: сохранение прав доступа, символических ссылок, структуры каталогов, а также возможность комбинирования с современными алгоритмами сжатия (gzip, bzip2, xz). В отличие от zip, tar не сжимает файлы по умолчанию, а только упаковывает, что даёт гибкость в выборе алгоритма сжатия.
Базовый синтаксис команды tar
Основные ключи, которые встречаются в большинстве сценариев:
-c— создать архив (create)-x— извлечь архив (extract)-f— указать имя файла архива-v— подробный вывод (verbose)-z— использовать сжатие gzip-j— использовать сжатие bzip2-J— использовать сжатие xz-t— просмотреть содержимое архива без распаковкиСоздание архивов: основные варианты
Обычный tar-архив без сжатия
Команда создаст архив backup.tar, содержащий всю папку public_html. Такой архив занимает столько же места, сколько и исходные данные, но его можно быстро создать и распаковать.
Архив со сжатием gzip (tar.gz)
Наиболее популярный вариант для бэкапов сайтов:
Ключ
-zактивирует сжатие алгоритмом gzip. Файл получается существенно меньше, а скорость сжатия остаётся высокой. Обычно расширение таких архивов — .tar.gz или .tgz.Максимальное сжатие с xz (tar.xz)
Если важна экономия дискового пространства, а время сжатия не критично:
Алгоритм xz обеспечивает наилучшую степень сжатия, но требует больше времени и оперативной памяти. Идеален для долгосрочного хранения.
Сжатие bzip2 (tar.bz2)
Золотая середина между размером и скоростью:
Исключение файлов и папок из архива
Часто при бэкапе сайта нет необходимости включать кеш, временные файлы или папки с большими медиаданными. Для исключения используется ключ
--exclude.Можно вынести список исключений в отдельный файл:
Файл exclude-list.txt содержит по одному шаблону на строку.
Просмотр содержимого архива без распаковки
Перед тем как извлекать данные, полезно убедиться в их наличии:
Если добавить ключ
-v, вывод станет более детальным (права, владельцы).Для просмотра только определённых файлов можно использовать grep:
Распаковка архивов
Извлечение в текущую папку
Для распаковки tar-архива используется ключ
-x. Тип сжатия определяется автоматически (gzip, bzip2, xz) при использовании соответствующих ключей, но современные версии tar умеют определять формат по расширению, поэтому часто достаточно:Распаковка в другую папку
Чтобы извлечь архив в определённый каталог, применяется ключ
-C:Важно: папка назначения должна существовать.
Извлечение только выбранных файлов или папок
Не всегда нужно восстанавливать весь архив. Можно извлечь отдельные элементы:
Путь внутри архива указывается так, как он отображается при просмотре (
tar -tf).Сохранение прав доступа и владельцев
По умолчанию tar сохраняет права доступа, но для восстановления владельцев (uid/gid) требуется запуск от root или использование ключа
--same-owner:Ключ
-p(или--preserve-permissions) гарантирует сохранение прав доступа, что критически важно для веб-серверов и скриптов.Добавление файлов в существующий архив
Утилита tar позволяет добавлять новые файлы в уже созданный архив (кроме сжатых, так как они представляют собой единый поток). Для несжатых архивов используется ключ
-r:Для сжатых архивов такой возможности нет — нужно создавать архив заново.
Автоматизация с помощью bash-скриптов
Для регулярного резервного копирования удобно использовать скрипты. Пример простого скрипта:
Такой скрипт можно добавить в cron для автоматического выполнения.
Часто встречающиеся ошибки и их решение
-P.Рекомендации по выбору формата для бэкапов сайтов
Для ежедневных резервных копий оптимально использовать gzip-сжатие — оно даёт хороший баланс скорости и объёма. При хранении архивов более месяца имеет смысл применять xz для экономии места. Важно всегда проверять целостность созданных архивов (команда
tar -tf archive.tar.gz > /dev/null) и хранить копии на отдельном носителе или в облаке.Освоив работу с tar, вы получаете надёжный инструмент для администрирования серверов, который не зависит от графического интерфейса и работает одинаково на любой Linux-системе. Практикуйтесь с разными ключами, и процесс создания и восстановления архивов станет для вас привычной рутиной.