TAR (от английского tape archive) – это формат контейнера, предназначенный для объединения
множества файлов и каталогов в один единый файл‑архив. Сам по себе TAR не сжимает данные,
а лишь «упаковывает» их в последовательность записей, каждая из которых содержит заголовок
(имя файла, права доступа, временные метки и т.д.) и собственно содержимое файла.
История и назначение
Формат появился в начале 1970‑х годов в операционной системе UNIX для записи данных на магнитные ленты.
В то время архивы использовались в основном для резервного копирования и переноса больших наборов файлов
между системами. Позднее TAR стал стандартом де‑факто в семействах UNIX и Linux и получил широкое
распространение в мире открытого программного обеспечения.
Структура TAR‑файла
- Заголовок записи – 512‑байтовый блок, в котором хранится информация о файле:
- Имя (до 100 символов, при необходимости – расширенный префикс)
- Права доступа (chmod)
- UID/GID владельца
- Размер файла в байтах
- Временная метка последней модификации
- Тип файла (обычный, каталог, символическая ссылка и т.д.)
- Содержимое файла – сразу после заголовка следует блок данных, выровненный по 512‑байтовой границе.
Если размер файла не кратен 512, в конец добавляются нулевые байты‑заполнители. - Конец архива – два последовательных блока из нулей (по 512 байт каждый) сигнализируют о завершении архива.
Почему TAR часто комбинируют с компрессией?
Поскольку сам формат не сжимает данные, в реальной практике TAR‑файлы почти всегда
«запаковываются» в один из популярных алгоритмов сжатия:
- gzip – получаем
.tar.gzили.tgz. Наиболее распространённый вариант. - bzip2 –
.tar.bz2. Достигает лучшего коэффициента сжатия, но медленнее. - xz –
.tar.xz. Самый высокий уровень сжатия среди традиционных вариантов, но требует больше памяти. - 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,
а также особенностей работы с архивами в разных ОС, позволит эффективно управлять данными
любого объёма.
и написана на русском языке.