Формат архива TAR.GZ¶
TAR.GZ — это расширение файла, обозначающее архив TAR, сжатый с помощью алгоритма gzip. Формат широко используется в операционных системах семейства Unix и Linux для упаковки наборов файлов и каталогов в единый файл с одновременным сжатием. Расширение .tar.gz (или сокращённо .tgz) является одним из наиболее распространённых способов дистрибуции программного обеспечения и резервного копирования в Linux-системах.
¶Структура формата
Формат TAR.GZ представляет собой комбинацию двух независимых технологий:
- TAR (tape archive) — утилита и формат архивации, объединяющая множество файлов и каталогов в один поток данных (архив). Сам по себе TAR не сжимает данные, а лишь упаковывает их, сохраняя структуру каталогов, права доступа, владельцев и метки времени.
- gzip (GNU zip) — программа сжатия данных, основанная на алгоритме DEFLATE, сочетающем алгоритмы LZ77 и каноническое кодирование Хаффмана. gzip заменяет устаревший стандарт сжатия
.Zиз пакета compress.
Таким образом, .tar.gz — это архив TAR, данные внутри которого сжаты алгоритмом gzip. Существует также альтернативный формат .tar.bz2, использующий алгоритм Bzip2, и более новый .tar.xz, основанный на LZMA/LZMA2, обеспечивающий более высокую степень сжатия, но требующий больше времени на обработку.
¶История
Утилита tar появилась в 1979 году в Unix-системе Unix V7 и изначально была предназначена для создания резервных копий на магнитные ленты (отсюда и название — tape archive). Формат tar позволял сохранять метаданные файловой системы, что было критически важно при восстановлении данных.
Программа gzip была создана Жан-люпом Гейлом (Jean-loup Gailly) и Марком Адлером (Mark Adler) в 1992 году как замена утилите compress. gzip стал стандартом сжатия в GNU-проекте и быстро вытеснил предшественников благодаря открытому алгоритму и лучшему коэффициенту сжатия.
Сочетание tar и gzip в виде единого расширения .tar.gz сформировалось в середине 1990-х годов и стало де-факто стандартом распространения исходного кода программ в Unix-мире.
¶Команды работы с TAR.GZ
В Linux и других Unix-подобных системах для работы с архивами TAR.GZ используются следующие команды:
| Действие | Команда |
|---|---|
| Создание архива | tar -czvf archive.tar.gz /путь/к/файлам |
| Распаковка архива | tar -xzvf archive.tar.gz |
| Просмотр содержимого | tar -tzvf archive.tar.gz |
| Извлечение в указанный каталог | tar -xzvf archive.tar.gz -C /каталог |
Параметры команды tar:
-c— создание нового архива;-x— извлечение файлов из архива;-z— сжатие/распаковка с помощью gzip;-v— подробный вывод (verbose);-f— указание имени файла архива.
¶Применение
TAR.GZ применяется в нескольких основных областях:
Дистрибуция программного обеспечения. Многие проекты с открытым исходным кодом распространяют свои релизы в виде .tar.gz-архивов с исходным кодом. Это позволяет пользователю скомпилировать программу под свою систему.
Резервное копирование. tar с флагом -g или в связке с утилитами типа rsnapshot позволяет создавать инкрементальные бэкапы в формате tar.gz.
Передача данных. Архивы tar.gz часто используются для передачи наборов файлов по сети или размещения на серверах, так как один файл проще копировать и хранить, чем множество отдельных файлов с сохранением структуры каталогов.
Пакетные системы. В Debian и Ubuntu пакеты .deb представляют собой архивы, сжатые алгоритмами gzip или xz, что роднит их по структуре с tar.gz.
¶TAR.GZ и ZIP: отличия
Основные отличия формата .tar.gz от .zip:
- ZIP объединяет архивацию и сжатие в одном формате, тогда как TAR.GZ — это комбинация двух отдельных утилит.
- ZIP сжимает каждый файл отдельно, TAR.GZ сжимает поток целиком, что обычно даёт лучший коэффициент сжатия.
- TAR.GZ полностью сохраняет Unix-специфичные атрибуты файлов (права доступа, симлинки, владельцы), ZIP изначально был разработан для DOS/Windows и поддерживает эти атрибуты лишь частично.
- ZIP поддерживает многотомность (разбиение на несколько файлов) из коробки; для tar это требует дополнительных инструментов.
¶Исторические источники
- Гейл Ж.-лю, Адлер М. RFC 1952: GZIP file format specification version 4.3, 1996.
- GNU tar Manual.
- Pike R., Thompson M. Hello, Unix. UNIX/HOIST Project, 1990.
