TAR: формат архива, история, структура и работа с архивами

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

+7 (800) 301-07-30

Реклама jurik.ru

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

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

Формат появился в начале 1970‑х годов в операционной системе UNIX для записи данных на магнитные ленты.
В то время архивы использовались в основном для резервного копирования и переноса больших наборов файлов
между системами. Позднее TAR стал стандартом де‑факто в семействах UNIX и Linux и получил широкое
распространение в мире открытого программного обеспечения.

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

  • Заголовок записи – 512‑байтовый блок, в котором хранится информация о файле:
    • Имя (до 100 символов, при необходимости – расширенный префикс)
    • Права доступа (chmod)
    • UID/GID владельца
    • Размер файла в байтах
    • Временная метка последней модификации
    • Тип файла (обычный, каталог, символическая ссылка и т.д.)
  • Содержимое файла – сразу после заголовка следует блок данных, выровненный по 512‑байтовой границе.
    Если размер файла не кратен 512, в конец добавляются нулевые байты‑заполнители.
  • Конец архива – два последовательных блока из нулей (по 512 байт каждый) сигнализируют о завершении архива.

Почему TAR часто комбинируют с компрессией?

Поскольку сам формат не сжимает данные, в реальной практике TAR‑файлы почти всегда
«запаковываются» в один из популярных алгоритмов сжатия:

  1. gzip – получаем .tar.gz или .tgz. Наиболее распространённый вариант.
  2. bzip2 – .tar.bz2. Достигает лучшего коэффициента сжатия, но медленнее.
  3. xz – .tar.xz. Самый высокий уровень сжатия среди традиционных вариантов, но требует больше памяти.
  4. lz4 и zstd – современные быстрые алгоритмы, дают компромисс между скоростью и степенью сжатия.

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

В большинстве UNIX‑подобных систем архив создаётся утилитой tar. Примеры команд:

# Создать простой архив без сжатия
tar -cvf backup.tar /home/user/documents

tar -czvf backup.tar.gz /home/user/documents

tar -cjvf backup.tar.bz2 /home/user/documents

tar -cJvf backup.tar.xz /home/user/documents

Ключи:

  • -c – создать архив;
  • -v – выводить процесс (verbose);
  • -f – указать имя файла архива;
  • -z – использовать gzip;
  • -j – использовать bzip2;
  • -J – использовать xz.

Извлечение файлов из TAR‑архива

Для распаковки используется тот же tar с ключом -x (extract):

# Распаковать без сжатия
tar -xvf backup.tar

tar -xzvf backup.tar.gz

tar -xzvf backup.tar.gz -C /tmp/restore

Работа с TAR‑архивами в Windows

В Windows нативной поддержки TAR нет, но существуют удобные графические и консольные инструменты:

  • 7‑Zip – бесплатный архиватор, умеющий открывать и создавать .tar, .tar.gz, .tar.bz2 и др.
  • WinRAR – коммерческий продукт, поддерживает большинство форматов.
  • PowerShell (начиная с версии 5) имеет встроенные команды Compress-Archive и Expand-Archive,
    однако они работают с форматом ZIP. Для TAR можно использовать tar.exe, который поставляется
    вместе с Windows 10/11.
  • Git Bash или Cygwin – предоставляют полноценный набор UNIX‑утилит, включая tar.

Сравнение TAR с другими архивными форматами

Формат Сжатие Поддержка метаданных Типичные сценарии использования
ZIP Встроенное сжатие (deflate, bzip2, LZMA и др.) Права доступа UNIX‑файлов часто теряются Обмен файлами между Windows и macOS, небольшие архивы
TAR + gzip/bzip2/xz Сжатие отдельным алгоритмом (можно выбрать) Сохраняет права, владельцев, ссылки, специальные файлы Резервные копии, перенос проектов, дистрибутивы Linux
7z Очень высокий уровень сжатия (LZMA/LZMA2) Поддерживает большинство атрибутов, но не так полно, как TAR Архивы, где важен минимум размера
RAR Хорошее сжатие, поддержка восстановления Ограниченная поддержка UNIX‑метаданных Коммерческие архивы, защита паролем

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

  • Incremental backup – с помощью опций --listed-incremental можно создавать
    инкрементные резервные копии, записывая только изменённые файлы.
  • Сохранение ACL и SELinux контекстов – ключи --acls, --selinux позволяют
    включать эти атрибуты в архив.
  • Создание многотомных архивов – опция -M (или --multi-volume) разбивает

    большой архив на части фиксированного размера.

  • Проверка целостности – после создания можно выполнить tar -tvf archive.tar для
    просмотра содержимого без распаковки.

Часто задаваемые вопросы (FAQ)

Чем отличается .tar.gz от .tgz?

Это одно и то же. .tgz – сокращённое расширение, часто используемое в Windows.

Можно ли добавить файлы в уже существующий TAR‑архив?

Да, с помощью опции -r (append): tar -rvf archive.tar newfile.txt.
Однако добавить файлы в сжатый архив (.tar.gz) напрямую нельзя – его нужно сначала
распаковать, добавить файлы и снова сжать.

Почему иногда при распаковке TAR‑архива теряются права доступа?

Если архив создавался без сохранения прав (например, с помощью --no-same-permissions)
или распаковывается от имени пользователя без соответствующих привилегий, система может
установить более «безопасные» значения.

Как проверить, не повреждён ли архив?

Команда tar -tvf archive.tar выводит список файлов и проверяет контрольные суммы
заголовков. Для сжатых архивов удобно использовать gzip -t archive.tar.gz,
bzip2 -t archive.tar.bz2 или xz -t archive.tar.xz.

TAR‑архив – это надёжный и гибкий способ объединять файлы и каталоги в один контейнер,
сохраняя при этом полную информацию о правах доступа, владельцах и специальных атрибутах.
Благодаря возможности комбинировать его с различными алгоритмами сжатия (gzip, bzip2, xz и др.),
TAR остаётся одним из самых популярных форматов резервного копирования и распространения
программного обеспечения в мире UNIX‑подобных систем; Знание основных команд tar,
а также особенностей работы с архивами в разных ОС, позволит эффективно управлять данными
любого объёма.


и написана на русском языке.