В Linux утилита tar (от tape archive) является стандартным инструментом для упаковки файлов и каталогов в один архивный файл. В отличие от простого копирования, tar сохраняет структуру каталогов, права доступа, владельцев и временные метки. При необходимости архив можно дополнительно сжать с помощью gzip, bzip2 или xz.
Синтаксис базовой команды
tar -[ключи] <имя_архива> <путь_к_файлам_или_каталогам> Где:
- -c – create, создать новый архив.
- -x – extract, извлечь содержимое архива.
- -t – list, показать список файлов в архиве.
- -v – verbose, выводить процесс в терминал (полезно для наблюдения).
- -f – указывает имя файла архива (обязательно, если работа идёт с файлом, а не со стандартным вводом/выводом).
- -z – сжать/разжать архив с помощью gzip (получаем
.tar.gzили.tgz). - -j – использовать bzip2 (получаем
.tar.bz2). - -J – использовать xz (получаем
.tar.xz).
Примеры создания архивов
Простой TAR‑архив без сжатия
tar -cvf backup.tar /home/dmosk Создаётся файл backup.tar, содержащий всю домашнюю директорию пользователя dmosk. Параметр -v выводит каждый добавляемый файл.
Архив с сжатием gzip (.tar.gz)
tar -czvf archive.tar.gz /home/dmosk Ключ -z указывает tar использовать gzip для сжатия. В результате получаем файл archive.tar.gz (иногда называют .tgz).
Архив с сжатием bzip2 (.tar.bz2)
tar -cjvf archive.tar.bz2 /home/dmosk Ключ -j переключает сжатие на bzip2. Этот метод обычно даёт лучшее сжатие, но работает медленнее.
Архив с сжатием xz (.tar.xz)
tar -cJvf archive.tar.xz /home/dmosk Ключ -J использует xz – современный алгоритм с высоким коэффициентом сжатия.
Создание архива и передача его по сети
Часто требуется создать архив «на лету» и сразу отправить его на удалённый сервер. Это удобно, так как не оставляет промежуточных файлов на диске.
Разбор команды:
-czvf -– создаём архив в поток-(stdout) и сразу сжимаем gzip.- Пайп
|передаёт поток в ssh. - На удалённом сервере
cat > /backup/www_backup.tar.gzсохраняет полученный поток в файл.
Извлечение файлов из архива
Распаковать весь архив в текущий каталог
tar -xvf backup.tar Распаковать gzip‑архив в указанный каталог
tar -xzvf archive.tar.gz -C /restore/path Ключ -C задаёт целевой каталог, куда будет произведено извлечение.
Просмотр содержимого без распаковки
tar -tvf archive.tar.gz Полезные комбинации ключей
| Комбинация | Назначение |
|---|---|
-cvf | Создать архив без сжатия |
-czvf | Создать архив и сжать gzip |
-cjvf | Создать архив и сжать bzip2 |
-cJvf | Создать архив и сжать xz |
-xvf | Распаковать архив без сжатия |
-xzvf | Распаковать gzip‑архив |
-xjvf | Распаковать bzip2‑архив |
-xJvf | Распаковать xz‑архив |
Часто задаваемые вопросы
- Можно ли добавить файлы в уже существующий архив?
Да. Для этого используется ключ-r(append) или-u(update). Пример:tar -rvf backup.tar newfile.txt - Как проверить целостность архива?
Командаtar -tvf archive.tar.gzвыводит список файлов; если она завершилась без ошибок, архив, как правило, цел. - Что делать, если архив слишком большой для одного диска?
Можно разбить его на части с помощью split:tar -czf ⸺ /big/data | split -b 2G ⸺ archive_part_Для восстановления:
cat archive_part_* | tar -xzvf - - Можно ли зашифровать архив?
Встроенного шифрования в tar нет, но можно использовать gpg:tar -czf ⎯ /home/dmosk | gpg -c -o backup.tar.gz.gpg
Лучшие практики при работе с TAR
- Всегда указывайте абсолютный путь к архивируемым данным, чтобы избежать неожиданного включения лишних файлов.
- Проверяйте права доступа после распаковки, особенно если архив создавался от root.
- Не храните пароли в скриптах. При удалённом копировании используйте SSH‑ключи.
- Отключайте вывод
-vв автоматических скриптах, чтобы не засорять логи. - Регулярно проверяйте резервные архивы командой
tar -tvfи, при возможности, делайте тестовое восстановление.
Пример скрипта резервного копирования
#!/bin/bash
DATE=$(date +%Y-%m-%d_%H-%M-%S)
ARCHIVE="/backup/home_${DATE}.tar.gz"
SOURCE="/home/dmosk"
tar -czf "$ARCHIVE" "$SOURCE"
if [ $? -eq 0 ]; then
echo "Резервная копия успешно создана: $ARCHIVE"
else
echo "Ошибка при создании резервной копии!" >&2
exit 1
fi
find /backup -name "home_*.tar.gz" -mtime +30 -delete
Скрипт можно добавить в cron для ежедневного выполнения.
Утилита tar – мощный и гибкий инструмент для создания архивов в Linux. С помощью небольшого набора ключей (-c, -x, -z, -j, -J, -v, -f) можно быстро упаковать любые файлы, сжать их, передать по сети и восстановить в любой момент. Следуя рекомендациям, приведённым в этой статье, вы сможете надёжно хранить резервные копии и эффективно управлять архивами в своих проектах.
Текущая дата и время: 20:34:28