Полное руководство по TAR-архивам: история, структура, команды и сжатие

Распакуй секреты TAR! Гайд по созданию, сжатию и извлечению архивов. Команды, флаги и лайфхаки для Linux и серверов. Стать мастером бэкапов легко.

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

+7 (800) 301-07-30

Реклама jurik.ru

Тар‑архив (от англ. tar – tape archive) – это один из самых популярных форматов упаковки файлов в один контейнер. Он широко используется в Unix‑подобных системах для создания резервных копий, распространения программного обеспечения и передачи наборов файлов между машинами.


Содержание

  1. История и назначение формата TAR
  2. Структура TAR‑файла
  3. Базовые операции с tar в командной строке
  4. Сжатие TAR‑архивов
  5. Продвинутые возможности
  6. Лучшие практики и типичные ошибки
  7. Безопасность и проверка целостности
  8. Альтернативные инструменты и библиотеки

История и назначение формата TAR

Формат tar появился в начале 1970‑х годов для записи данных на магнитные ленты (tape). Основная идея заключалась в том, чтобы собрать набор файлов в один последовательный поток, который легко записать и позже восстановить. С тех пор tar стал де‑факто стандартом для:

  • Создания резервных копий (backup);
  • Распространения исходного кода программ (часто в сочетании с gzip или bzip2);
  • Переноса больших наборов файлов между серверами.

Структура TAR‑файла

Тар‑архив состоит из последовательных блоков фиксированного размера (обычно 512 байт). Каждый файл описывается заголовком, после которого следуют данные файла, выравненные до целого количества блоков. В конце архива находятся два пустых блока, которые обозначают конец потока.

Ключевые поля заголовка:

Поле Размер (байт) Назначение
Имя файла 100 Полный путь внутри архива
Режим доступа 8 Unix‑права (octal)
UID / GID 8 + 8 Идентификаторы владельца и группы
Размер 12 Размер файла в байтах (восьмеричный)
Время модификации 12 UNIX‑timestamp (восьмеричный)
Контрольная сумма 8 Контрольная сумма заголовка
Тип файла 1 ‘0’ – обычный файл, ‘5’ – каталог и т.д.
Имя файла (длинное) 100 Для путей > (POSIX‑UStar)

Базовые операции с tar в командной строке

В большинстве дистрибутивов Linux и macOS утилита tar уже установлена. Ниже – самые часто используемые варианты.

Создание архива

tar -cvf archive.tar /path/to/directory
  • -c – создать архив;
  • -v – выводить имена файлов (verbose);
  • -f – указать имя файла архива.

Извлечение содержимого

tar -xvf archive.tar
  • -x – извлечь файлы;
  • -C /path/to/dir – распаковать в указанный каталог.

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

tar -tvf archive.tar

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

tar -rvf archive.tar newfile.txt
  • -r – добавить (append) файлы в конец архива.

Сжатие TAR‑архивов

Сам по себе tar не сжимает данные, но его удобно комбинировать с внешними компрессорами;

Компрессор Опция tar Расширение Плюсы / Минусы
gzip -z .tar.gz / .tgz Быстрое, широкая поддержка, умеренная степень сжатия.
bzip2 -j ;tar.bz2 Лучшее сжатие, но медленнее.
xz -J .tar.xz Самое высокое сжатие, но требует больше памяти и времени.
lz4 —lz4 .tar.lz4 Очень быстро, но низкое сжатие.
zstd —zstd .tar.zst Хороший компромисс между скоростью и степенью сжатия.

Пример создания сжатого архива

tar -cJvf backup.tar.xz /var/www

Извлечение сжатого архива

tar -xJvf backup.tar.xz

Продвинутые возможности

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

tar -cvf project.tar --exclude='*.log' --exclude='tmp/' .

Создание архива из списка файлов

tar -cvf selected.tar -T filelist.txt

Файл filelist.txt содержит один путь на строку.

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

tar -cvpf archive.tar /etc
  • -p – сохранять права доступа;
  • -f – имя файла;
  • -c – создать.

Создание «инкрементных» резервных копий

С помощью опций --listed-incremental (или --newer) можно хранить только изменённые файлы.

tar -cvf backup_full.tar /home
tar -g snapshot.file -cvf backup_inc.tar /home

Работа с архивами через конвейер (pipe)

tar -cf ⎻ /data | ssh user@remote "cat > /backup/data.tar"

Лучшие практики и типичные ошибки

  • Не храните архивы без сжатия в долгосрочной перспективе. Даже если вам нужен «чистый» tar, лучше сразу упаковать в gzip/bzip2/xz – экономия места.
  • Проверяйте целостность. После создания используйте tar -tvf archive.tar или tar --verify -f archive.tar.
  • Не забывайте про права доступа. При резервном копировании системных каталогов используйте -p и запускайте tar от root.
  • Избегайте длинных путей без поддержки UStar; Если требуется совместимость со старыми системами, ограничьте длину путей ми.
  • Не добавляйте файлы в уже сжатый архив. Для .tar.gz и подобных форматов операция -r невозможна – нужно распаковать, добавить и снова упаковать.
  • Регулярно проверяйте резервные копии. Автоматизируйте проверку с помощью cron и скриптов, сравнивая контрольные суммы.

Безопасность и проверка целостности

Тар‑архивы сами по себе не содержат криптографической защиты. Для обеспечения конфиденциальности и целостности рекомендуется:

  1. Создать архив.
  2. Сжать (по желанию).
  3. Подписать архив с помощью gpg:
    gpg --output archive.tar.gz.sig --detach-sig archive.tar.gz
  4. При передаче проверить подпись:
    gpg --verify archive.tar.gz.sig archive.tar.gz

Для автоматической проверки можно хранить sha256sum в отдельном файле:

sha256sum archive.tar.gz > archive.tar.gz.sha256

Альтернативные инструменты и библиотеки

  • GNU tar – самая распространённая реализация, поддерживает все перечисленные опции.
  • bsdtar (часть libarchive) – кроссплатформенный, умеет работать с множеством форматов (zip, cpio, pax).
  • 7‑zip (p7zip) – позволяет создавать и распаковывать tar‑архивы, часто используется в Windows.
  • Python – модуль tarfile позволяет программно работать с tar‑файлами:
    import tarfile
    with tarfile.open('data.tar.gz', 'w:gz') as tar:
     tar.add('folder')
  • Go – пакет archive/tar в стандартной библиотеке.

Тар‑архивы остаются фундаментальным инструментом для администраторов, разработчиков и обычных пользователей. Понимание их внутренней структуры, умение правильно использовать опции tar и сочетать их с современными компрессорами позволяет эффективно решать задачи резервного копирования, распространения программ и миграции данных.

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