Перетащите файлы или выберите
Вы можете конвертировать 3 файла до 10 МБ каждый
Перетащите файлы или выберите
Вы можете конвертировать 3 файла до 10 МБ каждый
Что такое конвертация TGZ в TAR?
Конвертация TGZ в TAR - это снятие слоя сжатия GZIP с архива и получение чистого TAR-контейнера. Файлы внутри сохраняются полностью неизменными байт в байт, как и сама структура UNIX-tarball: записи по 512 байт, заголовки с метаданными, блоки данных. Меняется только то, что архив больше не сжат алгоритмом DEFLATE. TGZ (TAR + GZIP) - это композитный формат: внутренний TAR-контейнер, обёрнутый внешним слоем GZIP. Расширения .tgz и .tar.gz обозначают одно и то же. TAR (Tape ARchive) появился в UNIX в 1979 году как формат для последовательной записи данных на магнитные ленты и за десятилетия стал универсальным контейнером для группировки файлов с сохранением POSIX-атрибутов.
Главная причина снятия GZIP-сжатия - получить возможность работать с содержимым архива без ограничений потокового сжатия. Чистый TAR можно открывать средствами файловых менеджеров на любых системах, добавлять и удалять файлы внутри без полной пересборки, применять другие алгоритмы сжатия (BZIP2, XZ, ZSTD), индексировать, проверять побайтно. TGZ за счёт сплошного сжатия не позволяет ничего из перечисленного без полной распаковки.
При конвертации архив проходит через единственный шаг: декодирование DEFLATE в исходный TAR-поток. Никаких изменений в составе файлов или структуре каталогов не происходит. Размер итогового TAR увеличивается, потому что слой сжатия снят, но взамен архив становится "прозрачным" для всех инструментов работы с TAR.
Технические различия форматов TGZ и TAR
Структура форматов
TGZ - это двухслойная конструкция. Внутренний слой - стандартный TAR-архив, состоящий из последовательности записей: заголовок 512 байт + данные файла, выровненные до кратного 512 байт. Внешний слой - GZIP, оборачивающий весь TAR-поток в сжатый контейнер с собственным заголовком (магические байты 1f 8b), флагами и контрольной суммой CRC-32. Файл .tgz всегда читается линейно с начала до конца.
TAR - это одноуровневый контейнер без сжатия. Каждая запись - заголовок ustar (512 байт), за которым следуют байты файла. Конец архива - два пустых блока по 512 байт. TAR хранит полные UNIX-атрибуты: владельца (имя и UID), группу (имя и GID), права доступа в восьмеричной форме, временные метки в Unix-time, тип файла (обычный, каталог, символическая ссылка, FIFO, устройство).
Сравнительная таблица возможностей
| Характеристика | TGZ | TAR |
|---|---|---|
| Сжатие | DEFLATE через GZIP | Нет |
| Размер | Сжат на 50-80% для текста | Полный размер исходных данных |
| Извлечение одного файла | Требует распаковки до позиции | Прямое извлечение по смещению |
| Добавление файлов | Полная пересборка | Прямое добавление в конец |
| Удаление файлов | Полная пересборка | Удаление с пересборкой / маркировка |
| POSIX-атрибуты | Сохраняются | Сохраняются полностью |
| UID/GID | Сохраняются | Сохраняются |
| Символические ссылки | Сохраняются | Сохраняются |
| Жёсткие ссылки | Сохраняются | Сохраняются |
| Расширенные атрибуты (xattr) | Через PAX | Через PAX |
| Индексирование | Нет | Возможно |
| Просмотр без распаковки | Нет | Да |
Размер файлов: реальные примеры
Соотношение размеров для типичных наборов данных:
| Тип данных | Исходный размер | TGZ | TAR | Прирост в TAR |
|---|---|---|---|---|
| Исходный код проекта | 100 МБ | 18-22 МБ | 100 МБ + 1-3% | в 5-6 раз |
| Текстовые документы | 50 МБ | 12-14 МБ | 50 МБ + 1-3% | в 4-5 раз |
| Дамп SQL базы | 200 МБ | 35-45 МБ | 200 МБ + 1-3% | в 5-6 раз |
| Изображения JPG | 500 МБ | 498-500 МБ | 500 МБ + 1-3% | минимально |
| Видеофайлы MP4 | 1 ГБ | 0.995-1 ГБ | 1 ГБ + 1-3% | минимально |
| Смешанный контент | 250 МБ | 130-180 МБ | 250 МБ + 1-3% | в 1.5-2 раза |
Прирост 1-3% в TAR относительно исходных файлов объясняется накладными расходами на заголовки записей и выравнивание блоков. Для медиафайлов и других уже сжатых форматов TGZ практически не отличается от TAR по размеру.
Когда необходима конвертация TGZ в TAR
Модификация содержимого архива
Чистый TAR позволяет работать с содержимым без полной распаковки и пересжатия:
- Добавление новых файлов - утилиты позволяют дописывать записи в конец TAR-архива без необходимости распаковывать всё.
- Удаление устаревших файлов - средствами командной строки или специализированных программ можно вырезать конкретные записи.
- Замена отдельных файлов - обновление конфигурационных файлов или документов в составе архива.
- Объединение нескольких архивов - конкатенация TAR-файлов с последующей дефрагментацией.
Применение другого алгоритма сжатия
После получения чистого TAR можно перепаковать его с другим методом сжатия:
- TAR -> XZ - получить лучшее сжатие, чем у GZIP, на 10-30% компактнее за счёт LZMA2.
- TAR -> BZ2 - переход на алгоритм BWT для лучшего сжатия текстовых данных.
- TAR -> ZSTD - современный алгоритм с высокой скоростью и сравнимым с XZ сжатием.
- TAR -> LZ4 - сверхбыстрое сжатие для частого доступа.
Прямой доступ к отдельным файлам
В чистом TAR можно построить индекс смещений и обращаться к файлам без последовательного чтения:
- Каталоги документов - извлечение конкретного PDF из тысяч хранящихся.
- Наборы изображений - доступ к одному изображению из миллионов в архивах фотобанков.
- Логи с метками времени - извлечение записей за конкретный день из годового архива.
Передача через системы, не поддерживающие GZIP
Некоторые встроенные системы и старые UNIX-окружения работают только с чистым TAR:
- Embedded-устройства - маршрутизаторы, IoT-шлюзы с ограниченным программным обеспечением.
- Минимальные образы Docker и LXC - базовые контейнеры без GZIP-утилит.
- Загрузочные ISO-образы - дистрибутивы, использующие TAR в качестве промежуточного формата.
Контроль целостности и аудит
Чистый TAR удобен для аудита содержимого:
- Сверка контрольных сумм - можно вычислить SHA-256 каждого файла внутри без распаковки в файловую систему.
- Антивирусная проверка - сканеры эффективнее работают с прозрачным TAR-потоком.
- Цифровая подпись - проще подписать конкретный TAR без зависимости от GZIP-обёртки.
Процесс конвертации
Этапы преобразования
Чтение заголовка GZIP - проверяются магические байты, метод сжатия (для GZIP это обычно DEFLATE), флаги (наличие имени исходного файла, комментария, дополнительных полей).
Декодирование DEFLATE - алгоритм обратно строит исходный поток данных из сжатого: применяется обратное преобразование LZ77 (восстановление повторений по ссылкам) и кодов Хаффмана (преобразование префиксных кодов в исходные байты).
Проверка контрольной суммы - GZIP содержит CRC-32 от исходных несжатых данных. Несовпадение означает повреждение архива.
Запись TAR-потока - восстановленные байты сохраняются как .tar файл. Это и есть исходный TAR-контейнер, который был сжат внутри TGZ.
Финализация - файл закрывается, метаданные файловой системы (имя, временные метки) проставляются согласно ОС.
Что сохраняется, а что меняется
Сохраняется полностью:
- Все файлы и каталоги внутри архива (байт в байт)
- POSIX-атрибуты (права доступа, владелец, группа)
- Временные метки модификации, доступа и создания
- Символические и жёсткие ссылки
- Специальные типы файлов (FIFO, устройства)
- Расширенные атрибуты в формате PAX
Меняется:
- Размер файла на диске (увеличивается до исходного несжатого)
- Расширение (.tgz/.tar.gz -> .tar)
- Возможность извлечения отдельных файлов (становится прямой)
Не меняется ничего из содержимого - конвертация TGZ -> TAR абсолютно lossless по составу архива.
Сравнение TAR с другими форматами
TAR против ZIP
ZIP - универсальный формат с собственным сжатием, TAR - чистый контейнер.
| Критерий | TAR | ZIP |
|---|---|---|
| Сжатие | Нет | DEFLATE |
| POSIX-атрибуты | Полные | Через расширения |
| Доступ к файлу | По смещению | По центральному каталогу |
| Размер файла | Без ограничений | До 4 ГБ (или ZIP64) |
| Совместимость с UNIX | Идеальная | Хорошая |
| Совместимость с Windows | Через программы | Нативная |
TAR предпочтительнее в UNIX-средах, где важны атрибуты и нет нужды в сжатии "из коробки".
TAR против CPIO
CPIO - другой UNIX-формат архивирования, аналог TAR.
| Критерий | TAR | CPIO |
|---|---|---|
| Размер заголовка | 512 байт | 76-110 байт |
| Поддержка длинных имён | Через PAX | Естественная |
| Распространённость | Очень высокая | Средняя |
| Использование | Дистрибутивы, бэкапы | initrd, RPM |
TAR доминирует в общем использовании, CPIO остаётся в специфических нишах.
TAR против ISO
ISO 9660 - формат образов оптических дисков.
| Критерий | TAR | ISO 9660 |
|---|---|---|
| Назначение | Архивирование | Образы дисков |
| Файловая система | Контейнер | Полная ФС |
| Загрузочность | Нет | Да |
| Случайный доступ | Через индекс | Нативный |
TAR - для архивирования, ISO - для образов дисков и установочных носителей.
Совместимость и поддержка TAR
Операционные системы
TAR - один из самых поддерживаемых форматов в UNIX-семействе:
- Linux - команда tar присутствует в каждом дистрибутиве из коробки. GUI-архиваторы (File Roller, Ark, Engrampa) открывают TAR двойным кликом.
- macOS - команда tar входит в стандартную поставку. Archive Utility распаковывает TAR через Finder.
- FreeBSD, OpenBSD, NetBSD - tar присутствует в базовой системе.
- Solaris, AIX, HP-UX - tar - часть стандартного набора UNIX-утилит.
- Windows - команда tar встроена в Windows 10 (build 17063+) и Windows 11. GUI-программы 7-Zip, WinRAR, PeaZip открывают TAR.
- Android и iOS - файловые менеджеры с поддержкой архивов работают с TAR.
Языки программирования
Стандартные библиотеки большинства языков включают поддержку TAR:
| Язык | Стандартная библиотека |
|---|---|
| Python | модуль tarfile |
| Java | apache-commons-compress |
| C# / .NET | SharpZipLib, SharpCompress |
| JavaScript / Node.js | tar, tar-stream |
| Go | пакет archive/tar |
| Rust | tar-rs |
| Ruby | rubygems-tar |
| Perl | Archive::Tar |
История развития формата
- 1979 - первая реализация tar для UNIX версии 7.
- 1988 - стандартизация POSIX в виде ustar (Uniform Standard Tape ARchive).
- 1992 - расширение GNU tar с поддержкой длинных имён через специальные записи.
- 2001 - стандарт PAX (POSIX Archive Interchange) с расширенными атрибутами.
- Настоящее время - TAR остаётся доминирующим архивным контейнером в UNIX-мире и используется как основа для TAR.GZ, TAR.BZ2, TAR.XZ, TAR.ZST.
Ограничения и альтернативы
Когда конвертация в TAR нецелесообразна
- Ограничения по дисковому пространству - чистый TAR занимает больше места, что критично при ограниченных ресурсах.
- Передача по медленным каналам - размер выше, чем у TGZ, время передачи увеличится.
- Долгосрочное хранение - для архивирования предпочтительнее форматы со сжатием.
Альтернативные сценарии
- TGZ -> TAR.XZ - получить лучшее сжатие при сохранении формата TAR.
- TGZ -> TAR.BZ2 - сжатие средней силы с хорошей поддержкой в Linux.
- TGZ -> TAR.ZST - современный алгоритм ZSTD: быстрая распаковка и хорошее сжатие.
Конвертация в чистый TAR оптимальна для промежуточного шага: получить контейнер, модифицировать содержимое, применить новое сжатие. Для конечного хранения или передачи обычно выбирают сжатую форму.
Для чего используют конвертацию TGZ в TAR
Модификация содержимого архива
Снятие сжатия для добавления, удаления или замены файлов внутри архива без полной пересборки
Подготовка к перепаковке
Получение промежуточного TAR для последующего применения XZ, BZ2 или ZSTD-сжатия
Прямой доступ к файлам
Извлечение отдельных файлов по смещениям без последовательной распаковки всего архива
Аудит и проверка целостности
Получение прозрачного контейнера для антивирусного сканирования и подсчёта контрольных сумм
Советы по конвертации TGZ в TAR
Учитывайте рост размера
Чистый TAR без сжатия для текстовых данных может быть в 4-6 раз больше исходного TGZ. Освободите достаточно места перед конвертацией
Используйте TAR как промежуточный формат
Конвертация в TAR оптимальна как шаг к перепаковке в другой алгоритм сжатия (XZ, BZ2, ZSTD) или для модификации содержимого