Перетащите файлы или выберите
Вы можете конвертировать 3 файла до 10 МБ каждый
Перетащите файлы или выберите
Вы можете конвертировать 3 файла до 10 МБ каждый
Что такое конвертация TGZ в TXZ?
Конвертация TGZ в TXZ - это перепаковка содержимого UNIX-tarball из устаревшего формата GZIP-сжатия в современный формат XZ с алгоритмом LZMA2. Внутренний TAR-контейнер с файлами сохраняется неизменным: те же записи, те же POSIX-атрибуты, те же временные метки. Меняется только внешний слой сжатия. TGZ (TAR + GZIP) использует алгоритм DEFLATE 1992 года со словарём 32 КБ. TXZ (TAR + XZ) применяет алгоритм LZMA2 со словарём до 1 ГБ, что обеспечивает значительно более плотное сжатие на современном уровне. Формат XZ был представлен в 2009 году как преемник LZMA-формата и быстро занял место стандарта в Linux-экосистеме.
Главная причина перевода TGZ в TXZ - модернизация архива до современного стандарта. Ядро Linux ещё в 2013 году перешло на распространение через kernel.org преимущественно в формате tar.xz, отказавшись от tar.bz2. Дистрибутивы Arch Linux, Debian, Ubuntu и многие другие используют XZ для пакетов программного обеспечения. Менеджеры пакетов dpkg, rpm, pacman работают с xz нативно. Переход с TGZ на TXZ даёт экономию 10-30% места при сопоставимой скорости распаковки и существенно лучшем сжатии для текстовых данных.
При конвертации происходит распаковка слоя GZIP в исходный TAR-поток и упаковка этого потока в новый слой XZ. Содержимое и структура TAR абсолютно сохраняются. Размер итогового TXZ существенно меньше, чем у TGZ, особенно для исходного кода, документации, логов и однотипных данных.
Технические различия форматов TGZ и TXZ
Алгоритмы сжатия
TGZ использует DEFLATE - алгоритм 1990-х годов на основе LZ77 со словарём 32 КБ и кодирования Хаффмана. Поток данных обрабатывается последовательно небольшими блоками. Преимущество - очень высокая скорость и минимальные требования к памяти; недостаток - ограниченная плотность сжатия из-за маленького окна поиска повторений.
TXZ применяет LZMA2 - современную модификацию алгоритма LZMA, разработанного Игорем Павловым. LZMA2 использует огромный скользящий словарь до 1 ГБ, диапазонное кодирование с контекстной моделью и адаптивный анализ потока данных. Длинные повторения находятся на больших расстояниях, что даёт значительно более плотное сжатие. XZ-обёртка добавляет современную проверку целостности (SHA-256 опционально), поддержку многопоточности и фильтры предобработки (Delta, BCJ для исполняемых файлов).
Сравнительная таблица возможностей
| Характеристика | TGZ | TXZ |
|---|---|---|
| Год алгоритма | 1992 (GZIP) | 2009 (XZ) |
| Базовый алгоритм | DEFLATE | LZMA2 |
| Размер словаря | 32 КБ | до 1 ГБ |
| Контейнер атрибутов | TAR (POSIX) | TAR (POSIX) |
| Степень сжатия | Базовая | Лучше на 10-30% (vs BZIP2) и 30-50% (vs GZIP) |
| Скорость сжатия | Высокая | Средняя |
| Скорость распаковки | Высокая | Сопоставимая или чуть ниже |
| Требования к памяти при распаковке | Минимальные | 50-200 МБ |
| Многопоточность | Ограниченная | Полная (xz -T) |
| Контрольные суммы | CRC-32 | CRC-32, CRC-64, SHA-256 |
| Фильтры предобработки | Нет | Delta, BCJ, BCJ2 |
Степень сжатия: реальные примеры
Соотношение размеров архивов для типичных наборов данных:
| Тип данных | Исходный размер | TGZ | TXZ (xz -9) | Экономия в TXZ |
|---|---|---|---|---|
| Исходный код проекта | 100 МБ | 18-22 МБ | 12-15 МБ | 30-40% |
| Текстовые документы | 50 МБ | 12-14 МБ | 8-10 МБ | 30-45% |
| Дамп SQL базы | 200 МБ | 35-45 МБ | 20-30 МБ | 40-55% |
| Логи серверов | 1 ГБ | 200-250 МБ | 80-120 МБ | 50-65% |
| Бинарные файлы (с фильтром BCJ) | 500 МБ | 350-400 МБ | 280-330 МБ | 15-25% |
| XML/JSON-документы | 200 МБ | 30-40 МБ | 18-25 МБ | 35-50% |
| Изображения JPG | 500 МБ | 498-500 МБ | 495-498 МБ | минимально |
Преимущество XZ особенно заметно на исходниках, логах и SQL-дампах - типах данных, преобладающих в дистрибутивах Linux. На уже сжатых медиафайлах разница незначительна.
Когда необходима конвертация TGZ в TXZ
Модернизация репозиториев пакетов
Современные Linux-дистрибутивы используют XZ как стандарт:
- Arch Linux - пакеты в формате pkg.tar.zst или pkg.tar.xz, репозитории также в xz.
- Debian/Ubuntu - .deb пакеты содержат data.tar.xz и control.tar.xz внутри.
- Fedora/RHEL/CentOS - .rpm пакеты используют xz для сжатия данных.
- Slackware - официальный формат пакетов txz с 2009 года.
- Gentoo Portage - distfiles для исходного кода преимущественно в tar.xz.
Архивирование исходного кода
Ядро Linux и крупные проекты предпочитают XZ:
- Linux kernel - архивы на kernel.org преимущественно в tar.xz с 2013 года.
- GNU Project - GCC, glibc, binutils распространяются в tar.xz.
- KDE и GNOME - релизы рабочих сред упаковываются в xz.
- Apache Foundation - многие проекты Apache предлагают tar.xz рядом с tar.gz.
Долгосрочное хранение текстовых данных
XZ оптимален для архивов с редким доступом, где важен размер:
- Историческая документация - снимки документации проекта за прошедшие годы.
- Архивы переписки - почтовые ящики mbox, exporta IMAP.
- Журналы аудита - логи безопасности, журналы изменений систем.
- Снимки баз данных - дампы PostgreSQL, MySQL за прошедшие периоды.
Передача через медленные каналы
Меньший размер ускоряет передачу:
- Зеркала Linux-дистрибутивов - синхронизация миллионов пакетов между серверами.
- CI/CD-конвейеры - артефакты сборки между этапами сборки и развёртывания.
- Удалённое резервное копирование - бэкапы с офлайн-сайтов через ограниченный канал.
- Спутниковая связь - научные миссии с дорогим трафиком.
Процесс конвертации
Этапы преобразования
Чтение заголовка GZIP - анализ магических байтов 1f 8b, метода сжатия, временной метки и имени исходного файла во внешней обёртке TGZ.
Декодирование DEFLATE - алгоритм восстанавливает исходный TAR-поток через обратное LZ77 (восстановление повторений по ссылкам в окне 32 КБ) и обратное кодирование Хаффмана.
Сохранение TAR-потока - содержимое TAR не модифицируется ни в одном байте: те же 512-байтные записи, те же заголовки ustar или PAX, те же блоки данных.
Анализ для LZMA2 - определяются параметры сжатия: размер словаря (типично 64 МБ для уровня 9), режим (быстрый, нормальный или максимальный), целесообразность фильтров предобработки.
Применение фильтров - при наличии исполняемых файлов внутри (.exe, .so, .o) активируется фильтр BCJ, преобразующий относительные адреса переходов в абсолютные для лучшего сжатия повторяющихся инструкций.
Сжатие LZMA2 - данные обрабатываются блоками с поиском длинных повторений в скользящем словаре. Применяется диапазонное кодирование с контекстной моделью.
Упаковка в XZ-контейнер - блоки оборачиваются в формат XZ с заголовком, индексом блоков и контрольной суммой CRC-64 (по умолчанию).
Что сохраняется, а что меняется
Сохраняется полностью:
- Содержимое каждого файла побайтно
- Имена файлов и каталогов с поддержкой Unicode и длинных имён
- Структура каталогов любой глубины
- Полные POSIX-атрибуты: владелец, группа, права, временные метки
- Символические и жёсткие ссылки
- Специальные файлы (FIFO, устройства)
- Расширенные атрибуты (xattr) при наличии PAX-расширений
Меняется:
- Размер итогового архива (обычно уменьшается на 30-50%)
- Алгоритм внешнего сжатия (DEFLATE -> LZMA2)
- Расширение файла (.tgz/.tar.gz -> .txz/.tar.xz)
- Контрольные суммы внешнего слоя (CRC-32 заменяется на CRC-64 или SHA-256)
Сравнение TXZ с другими форматами архивов
TXZ против TGZ
Прямой переход с устаревшего формата.
| Критерий | TXZ | TGZ |
|---|---|---|
| Алгоритм | LZMA2 | DEFLATE |
| Степень сжатия | Лучше на 30-50% | Базовая |
| Скорость сжатия | Медленнее | Очень быстро |
| Скорость распаковки | Сопоставима | Очень быстро |
| Современность | 2009 | 1992 |
| Linux-стандарт | Текущий | Предыдущий |
TXZ выигрывает почти по всем параметрам, кроме скорости сжатия.
TXZ против TBZ2
TBZ2 - предшественник TXZ в Linux-стандартах.
| Критерий | TXZ | TBZ2 |
|---|---|---|
| Алгоритм | LZMA2 | BZIP2 |
| Степень сжатия | Лучше на 10-30% | Хорошая |
| Скорость распаковки | Быстрее | Медленнее |
| Возраст | 2009 | 1996 |
| Текущий стандарт | Да | Устаревает |
TXZ заменил TBZ2 в большинстве крупных проектов Linux.
TXZ против TAR.ZST
TAR.ZST - современный конкурент с другим балансом.
| Критерий | TXZ | TAR.ZST |
|---|---|---|
| Алгоритм | LZMA2 (2009) | ZSTD (2016) |
| Степень сжатия | Чуть лучше | Сопоставимая |
| Скорость сжатия | Низкая | Очень высокая |
| Скорость распаковки | Высокая | Очень высокая |
| Распространённость | Стандарт Linux | Растущая |
ZSTD выигрывает по скорости, XZ - по плотности; оба активно используются в современном Linux.
Совместимость и поддержка TXZ
Операционные системы
XZ поддерживается всеми современными UNIX-системами и Windows:
- Linux - утилита xz и интеграция с tar присутствует во всех дистрибутивах. Команда
tar xJf archive.tar.xzработает из коробки. - macOS - xz доступен через Homebrew, MacPorts или встроен в macOS Catalina и новее. Archive Utility открывает .xz через Finder.
- FreeBSD, OpenBSD, NetBSD - xz присутствует в базовой системе или ports.
- Windows - 7-Zip, WinRAR, PeaZip, BandiZip открывают TXZ. Команда tar в Windows 10 (build 17063+) поддерживает .tar.xz.
- Android - современные файловые менеджеры (ZArchiver, MiXplorer) распаковывают TXZ.
- iOS - приложения для архивов в App Store работают с TXZ.
Языки программирования
Поддержка XZ/LZMA2 встроена или доступна через библиотеки:
| Язык | Стандартная библиотека |
|---|---|
| Python | модули lzma, tarfile (с режимом xz) |
| Java | apache-commons-compress, XZ for Java |
| C# / .NET | XZ.NET, SharpCompress |
| JavaScript / Node.js | lzma-native, xz-decompress |
| Go | github.com/ulikunitz/xz |
| Rust | xz2, liblzma-rs |
| C / C++ | liblzma (автор - Lasse Collin) |
| Ruby | xz-ruby |
История развития формата
- 1998 - Игорь Павлов разрабатывает алгоритм LZMA для 7-Zip.
- 2008 - Lasse Collin создаёт liblzma и формат XZ как преемник проекта LZMA Utils.
- 2009 - публикация спецификации XZ Utils 4.999.9 beta.
- 2013 - Linux kernel переходит на распространение архивов в tar.xz как основной формат.
- 2010-е - постепенное вытеснение bz2 из дистрибутивов Linux в пользу xz.
- Настоящее время - XZ остаётся стандартом сжатия в Linux наряду с растущим ZSTD.
Ограничения и альтернативы
Когда конвертация в TXZ нецелесообразна
- Очень частая распаковка с минимальными ресурсами - LZMA2 требует больше памяти при распаковке (50-200 МБ), чем GZIP.
- Уже сжатые медиаданные - выигрыш минимальный, скорость сжатия существенно ниже.
- Совместимость со старыми UNIX - на legacy-системах xz может отсутствовать в базовой поставке.
- Сценарии с приоритетом скорости сжатия - для CI/CD и потоковой обработки ZSTD предпочтительнее.
Альтернативные сценарии
- TGZ -> TAR.ZST - современный быстрый алгоритм с близким сжатием.
- TGZ -> 7Z - кросс-платформенный формат с тем же LZMA2.
- TGZ -> TBZ2 - совместимость со старыми UNIX-системами.
- TGZ -> TAR - снять сжатие для модификации содержимого.
TXZ - оптимальный выбор для долгосрочного хранения и распространения в Linux-экосистеме, когда важна максимальная плотность сжатия при сохранении полных POSIX-атрибутов.
Для чего используют конвертацию TGZ в TXZ
Модернизация Linux-репозиториев
Перевод архивов пакетов и распространяемых файлов на современный стандарт сжатия Linux
Долгосрочное хранение исходников
Архивирование релизов и снимков git-репозиториев с максимальной экономией места
Распространение через зеркала
Уменьшение размера архивов на серверах зеркалирования и в CDN-сетях
Хранение SQL-дампов и логов
Компактное архивирование текстовых данных с многократным выигрышем по сравнению с GZIP
Советы по конвертации TGZ в TXZ
Учитывайте память при распаковке
LZMA2 требует 50-200 МБ памяти при распаковке против считанных мегабайт у GZIP. На очень слабых системах это может быть фактором
Выбирайте между XZ и ZSTD
XZ даёт чуть лучшее сжатие, ZSTD - намного выше скорость сжатия. Для CI/CD и потоковой обработки ZSTD выгоднее, для архивов с редким доступом - XZ