Руководство по работе с архиватором tar

Освойте tar за 5 минут: секреты создания, сжатия и распаковки архивов. Готовые рецепты для терминала, которые сэкономят кучу времени!

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Архиватор tar (Tape ARchive) – один из самых универсальных инструментов в UNIX‑подобных системах․ Он позволяет объединять множество файлов и каталогов в один файл‑архив, а при необходимости добавлять сжатие (gzip, bzip2, xz и др․)․ Ниже – подробное руководство по созданию архивов tar с практическими примерами, которые можно сразу применять в работе․


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

Общий вид команды:

tar [опции] файл_архива [файлы_или_каталоги]

Главные опции, которые нам понадобятся:

  • -c – создать (create) архив;
  • -x – извлечь (extract) архив;
  • -t – показать содержимое (list) архива;
  • -f – указать имя файла архива;
  • -v –verbose (подробный вывод);
  • -z – сжать через gzip (․tar․gz);
  • -j – сжать через bzip2 (․tar․bz2);
  • -J – сжать через xz (․tar․xz);
  • --exclude=ШАБЛОН – исключить файлы/каталоги по шаблону;
  • -P – сохранять абсолютные пути (по умолчанию tar удаляет ведущий slash);
  • -r – добавить файлы в существующий архив;
  • -u – обновить архив (добавить только новые/изменённые файлы)․

Создание несжатого архива tar

Самый простой вариант – архив без сжатия․ Подходит, когда нужно просто собрать файлы вместе, а размер не критичен․

Пример 1: архив из нескольких файлов

tar -cf archive․tar file1․txt file2․log file3․conf

Пример 2: архив всего каталога

tar -cf backup․tar /home/user/docs

После выполнения получится файл archive․tararchive․tar (или backup․tar), содержащий все указанные данные в оригинальном виде․

Сжатые архивы tar

Для уменьшения размера архива обычно применяют одно из трёх популярных сжатий․

Gzip (расширение ․tar․gz или ․tgz)

tar -czf archive․tar․gz /path/to/data

Опция -z активирует gzip․

Bzip2 (расширение ․tar․bz2)

tar -cjf archive;tar․bz2 /path/to/data

Опция -j активирует bzip2 (более сильное сжатие, но медленнее)․

Xz (расширение ․tar․xz)

tar -cJf archive․tar․xz /path/to/data

Опция -J активирует xz (лучшее współczynnik сжатия среди трёх)․

Исключение файлов и каталогов

Часто нужно создать архив, но не включать в него временные файлы, логи или определённые подкаталоги․ Для этого используется флаг --exclude․ Его можно указывать несколько раз – все условия логически объединяются через AND․

Пример: архив проекта без каталога node_modules и файлов ․log

tar -czf project․tar․gz --exclude='node_modules' --exclude='*․log' /var/www/myproject

Подробный вывод и проверка содержимого

Опция -v показывает, какие файлы добавляются в архив․ Это удобно для отладки․

tar -cvf archive․tar /etc/nginx

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

tar -tf archive․tar․gz

Извлечение (распаковка) архива

Для распаковки применяем опцию -x вместе с соответствующим флагом сжатия (если архив сжат)․

Несжатый tar

tar -xf archive․tar

Gzip

tar -xzf archive․tar․gz

Bzip2

tar -xjf archive․tar․bz2

Xz

tar -xJf archive․tar․xz

По умолчанию файлы распаковываются в текущий каталог․ Чтобы указать целевую директорию, добавляем -C:

tar -xzf archive․tar․gz -C /opt/backup

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

Если архив уже создан и нужно добавить новые файлы без полной перепаковки, используем -r (добавить) или -u (обновить только новые/изменённые)․

Пример добавления файла

tar -rf archive․tar newfile․txt

Пример обновления (добавит только изменившиеся файлы)

tar -uf archive․tar changed_file․conf

Обратите внимание: эти операции работают только с несжатыми архивами (․tar)․ Для сжатых архивов придётся сначала распаковать, внести изменения и снова запаковать․

Разбиение большого архива на части

Иногда требуется переместить архив на носитель с ограничением размера (например, на флешку 4 ГБ)․ Tar умеет разбивать вывод на части при помощи утилиты split или непосредственно через опцию -M (multi‑volume)․ Ниже показан способ через split․

Создание и разбиение архива tar․gz на части по 100 МБ

tar -czf ⎻ /var/www | split -b 100M ⎻ site_backup․tar․gz․

Получим файлы site_backup․tar․gz․aa, site_backup․tar․gz․ab и т․д․ Для восстановления:

cat site_backup․tar․gz․* | tar -xzf -

Полезные советы и лучшие практики

  • Всегда проверяйте содержимое архива перед распаковкой (tar -tf), особенно если архив получен из ненадёжного источника․
  • Для резервного копирования системных каталогов (/etc, /var/log) используйте абсолютные пути и опцию -P, чтобы сохранить ведущий slash․
  • При работе с большими объёмами данных предпочтительно использовать --exclude для игнорирования кэша, временных файлов и логов․
  • Если нужно создать архив сразу нескольких каталогов, перечислите их через пробел:
    tar -czf full_backup․tar․gz /home /etc /var/www
  • Автоматизируйте процесс создания архивов в cron‑заданиях, добавляя дату в имя файла:
    tar -czf /backups/backup_$(date +%Y%m%d_%H%M)․tar․gz /important_data

Команда tar остаётся незаменимым инструментом для архивации в Linux благодаря своей простоте, гибкости и поддержке различных методов сжатия․ Освоив основные опции (-c, -x, -z, -j, -J, --exclude и др․), вы сможете быстро создавать резервные копии, переносить данные между системами и эффективно управлять большими наборами файлов․

Надеюсь, данное руководство окажется полезным как для начинающих системных администраторов, так и для опытных DevOps‑инженеров․ Удачной работы с архивами!