Перетащите файлы или выберите
Вы можете конвертировать 3 файла до 10 МБ каждый
Перетащите файлы или выберите
Вы можете конвертировать 3 файла до 10 МБ каждый
Что такое конвертация TAR в TXZ?
Конвертация TAR в TXZ - это применение современного алгоритма сжатия XZ к контейнеру TAR. Расширение .txz (или .tar.xz) обозначает архив, в котором TAR-поток пропущен через XZ-компрессор, использующий LZMA2 (Lempel-Ziv-Markov chain Algorithm 2). TAR появился в 1979 году как стандарт Unix для объединения файлов в один контейнер с сохранением POSIX-семантики. XZ был представлен в 2009 году командой Tukaani как наследник LZMA Utils и быстро стал стандартом сжатия в современных Linux-дистрибутивах.
Главная мотивация перевода TAR в TXZ - получение архива с одним из лучших коэффициентов сжатия в индустрии при сохранении полной Unix-семантики. На текстовых данных XZ даёт сжатие на 10-30% эффективнее BZIP2 и на 30-60% эффективнее GZIP. Распаковка XZ существенно быстрее BZIP2, что делает формат подходящим для долговременного хранения с эпизодическим доступом к данным.
При конвертации TAR-поток подаётся на вход XZ-компрессора. Алгоритм LZMA2 анализирует данные с настраиваемым словарём (по умолчанию 8 МБ, до 1.5 ГБ при максимальном уровне), выявляет дальние повторения и кодирует их компактно через диапазонное кодирование с контекстной моделью. Полученный поток заворачивается в XZ-контейнер с проверкой целостности по нескольким алгоритмам (CRC-32, CRC-64, SHA-256).
Технические различия форматов TAR и TXZ
Алгоритмы и принципы сжатия
TAR работает как чистый контейнер последовательного доступа. Каждый файл предваряется заголовком фиксированного размера 512 байт с метаданными: имя файла (до 100 символов в стандарте, до 255 в расширении PAX), размер, тип записи, права POSIX, владелец и группа, временные метки, контрольная сумма заголовка. Данные файлов записываются без модификации.
XZ оборачивает поток данных в многослойный контейнер. Внутренний слой - алгоритм LZMA2, разделяющий данные на блоки и применяющий к каждому LZMA с динамической перенастройкой параметров. Алгоритм находит повторения через словарь до 1.5 ГБ и кодирует их арифметическим кодером с контекстной моделью. Внешний слой XZ-формата добавляет заголовок, индекс блоков и контрольные суммы, что позволяет проверять целостность и потенциально извлекать отдельные блоки.
Сравнительная таблица возможностей
| Характеристика | TAR | TXZ |
|---|---|---|
| Год создания | 1979 | 2009 |
| Сжатие данных | Нет | LZMA2 |
| Размер словаря | Не применимо | до 1.5 ГБ (макс) |
| POSIX-атрибуты | Полная поддержка | Полная поддержка |
| Потоковая обработка | Да | Да |
| Параллельное сжатие | Нет | Да (xz multithreaded) |
| Контрольные суммы | Только заголовка | CRC-32, CRC-64, SHA-256 |
| Восстановление | Нет | Через индекс блоков |
| Скорость сжатия | Мгновенная | Медленная |
| Скорость распаковки | Мгновенная | Высокая |
| Использование памяти при сжатии | Минимум | до 700 МБ при ультра |
Реальные показатели сжатия
Соотношение размеров для типичных рабочих наборов при использовании XZ уровня 9 (ультра):
| Тип данных | TAR (исходный) | TXZ | Коэффициент |
|---|---|---|---|
| Исходный код Linux | 1 ГБ | 95-115 МБ | в 8.5-10.5 раз |
| Системный пакет (.deb extracted) | 200 МБ | 25-35 МБ | в 5.7-8 раз |
| Дамп PostgreSQL | 1 ГБ | 65-85 МБ | в 12-15 раз |
| Системные логи journald | 800 МБ | 20-30 МБ | в 26-40 раз |
| Документация текстовая | 400 МБ | 50-65 МБ | в 6-8 раз |
| Архив исходников Mozilla | 500 МБ | 65-80 МБ | в 6-7.5 раз |
| Бинарные исполняемые файлы | 300 МБ | 90-130 МБ | в 2.3-3.3 раза |
| Уже сжатые JPEG/MP4 | 1 ГБ | 990-1000 МБ | менее 1% |
XZ обеспечивает выдающееся сжатие текстовых данных и кода. Преимущество над BZIP2 особенно заметно на больших объёмах однотипных данных благодаря огромному словарю.
Когда необходима конвертация TAR в TXZ
Дистрибуция в современных Linux-дистрибутивах
Стандарт сжатия для пакетов и образов в 2010-2020-х годах:
- Пакеты Debian и Ubuntu - формат
.debиспользует TXZ для сжатия данных пакета (data.tar.xz), что экономит сотни мегабайт на каждом релизе. - Пакеты Arch Linux - официальные репозитории распространяют пакеты в
.pkg.tar.xz(с 2020 переход на zst). - Пакеты Fedora и RHEL - RPM-формат поддерживает XZ-сжатие данных, что делает образы дистрибутивов компактнее.
- ISO-образы Linux - сжатые образы установочных дисков используют XZ для уменьшения объёма загрузки.
- Релизы ядра Linux - с 2013 года официальные tarball-ы ядра распространяются как
.tar.xz.
Хранение редко обновляемых данных
XZ идеально подходит для архивов с однократной записью и многократным чтением:
- Холодное хранилище баз данных - дампы PostgreSQL, MySQL, ClickHouse за прошлые периоды занимают на 30-50% меньше места по сравнению с GZIP.
- Архив научных публикаций - PDF-метаданные, BibTeX-каталоги, текстовые корпуса.
- Геномные базы данных - последовательности FASTA с миллионами записей.
- Корпоративные бэкапы - архивы документов, переписки, внутренних wiki за годы.
Кросс-серверная репликация и зеркалирование
В условиях ограниченной полосы пропускания между ЦОД важна каждая килобайта:
- Репликация дистрибутивов - публичные зеркала Debian, Fedora, openSUSE экономят терабайты трафика.
- CDN-доставка - крупные архивы (медицинские снимки, GIS-данные) распространяются в TXZ для скорости.
- Бэкап в облако - S3, Backblaze B2, Wasabi платят по объёму, и компактный TXZ напрямую снижает счета.
- Распространение виртуальных машин - готовые образы Vagrant box, OVA-шаблоны, контейнерные образы.
Архивы для сертификации и аудита
Когда важна и компактность, и проверяемость:
- Архивы для аудиторских проверок - финансовые отчёты, логи операций, истории транзакций. SHA-256 встроен в формат XZ.
- Юридические долгосрочные архивы - документы с контрактами, копии переписки, материалы дел.
- Государственное хранение - архивы министерств, статистические отчёты, переписи населения.
- Архивы СМИ - расшифровки интервью, текстовые версии передач.
Процесс конвертации: что происходит с архивом
Этапы преобразования
Открытие TAR-потока - архив читается последовательно. Внутренняя структура файлов и заголовков не модифицируется. TAR подаётся в XZ как непрерывный поток байтов.
Разбиение на блоки XZ - входной поток делится на блоки, размер которых определяется параметрами сжатия. Стандартный размер блока совпадает с размером словаря LZMA2.
Применение LZMA2 к каждому блоку - алгоритм строит модель данных, ищет повторяющиеся последовательности на расстоянии до размера словаря (8 МБ по умолчанию, до 1.5 ГБ на максимальном уровне). Найденные повторения кодируются ссылками "длина + расстояние".
Арифметическое кодирование с контекстной моделью - LZMA2 использует range coder с адаптивной контекстной моделью, которая отслеживает вероятности появления символов в зависимости от предшествующего контекста.
Запись блоков в XZ-контейнер - сжатые блоки оборачиваются заголовками с информацией о размере, контрольными суммами CRC-32 или CRC-64 (по умолчанию) или SHA-256 (опционально). В конец архива добавляется индекс всех блоков.
Финализация - формируется завершающая структура с подписью формата и общей контрольной суммой.
Что сохраняется, а что меняется
Сохраняется полностью:
- Содержимое всех файлов байт в байт после распаковки
- Имена и расширения с поддержкой Unicode (через PAX-расширения)
- Полная структура папок и подпапок
- POSIX-права rwx для владельца, группы, остальных
- Идентификаторы владельца uid и группы gid
- Имена пользователя и группы
- Временные метки модификации, доступа, изменения
- Символические и жёсткие ссылки в Unix-семантике
- FIFO-каналы, sparse-файлы, специальные устройства
- Расширенные атрибуты xattr и ACL (через PAX)
Меняется:
- Размер архива (уменьшается в 4-30 раз для подходящих данных)
- Способ хранения (блочное LZMA2-сжатие)
- Добавляются контрольные суммы по нескольким алгоритмам
Сравнение TXZ с другими форматами архивов
TXZ против TGZ
TGZ - классический Unix-стандарт с GZIP.
| Критерий | TXZ | TGZ |
|---|---|---|
| Алгоритм | LZMA2 | DEFLATE |
| Размер словаря | до 1.5 ГБ | 32 КБ |
| Сжатие текста | Лучше на 30-60% | Базовое |
| Скорость сжатия | Медленнее в 5-15 раз | Очень быстрая |
| Скорость распаковки | Сопоставима | Очень быстрая |
| Возраст | 2009 | 1992 |
TXZ лучше для архивирования, TGZ - для частого доступа.
TXZ против TBZ2
TBZ2 использует более старый BZIP2.
| Критерий | TXZ | TBZ2 |
|---|---|---|
| Алгоритм | LZMA2 | BZIP2 (BWT) |
| Сжатие | Лучше на 10-30% | Базовое |
| Скорость распаковки | Быстрее в 2-3 раза | Средняя |
| Использование памяти | Больше | Меньше |
| Современность | Активно используется | Сохраняется в legacy |
TXZ - современный преемник TBZ2 в Linux-экосистеме.
TXZ против 7Z
7Z использует тот же LZMA2 в другом контейнере.
| Критерий | TXZ | 7Z |
|---|---|---|
| Алгоритм | LZMA2 | LZMA2 |
| POSIX-атрибуты | Полная поддержка | Частичная |
| Многотомность | Через split | Нативная |
| Шифрование | Через GPG-обёртку | Встроенное AES-256 |
| Распространённость | Linux | Кросс-платформенная |
TXZ - выбор для Unix-сред, 7Z - для смешанных команд.
Совместимость и поддержка TXZ
Операционные системы
XZ Utils присутствует во всех современных Unix-системах:
- Linux - утилиты
xz,xzcat,unxzвходят в базовый набор Debian, Ubuntu, Fedora, Arch, openSUSE, Alpine начиная с 2010 года. - macOS - команда
tarподдерживает флаг-Jдля прозрачной работы с XZ. Доступна из Terminal без установки. - FreeBSD, OpenBSD - XZ Utils установлен по умолчанию из базовой системы.
- Solaris, AIX - доступен через дополнительные пакеты Solaris CSW или IBM AIX Toolbox.
- Windows - поддержка через 7-Zip, Bandizip, PeaZip, WinRAR. Также доступно в Cygwin, MSYS2, WSL.
- Android, iOS - через файловые менеджеры с поддержкой Linux-форматов.
Инструменты разработки
Поддержка XZ/LZMA2 встроена в стандартные библиотеки большинства языков:
| Язык | Стандартная библиотека |
|---|---|
| Python | модуль lzma, библиотека python-xz |
| Java | пакет org.tukaani.xz (XZ for Java) |
| C / C++ | библиотека liblzma |
| Go | пакет github.com/ulikunitz/xz |
| Rust | crate xz2, lzma-rs |
| JavaScript | модули xz-decompress, lzma-native |
| Ruby | gem ruby-xz |
История развития формата
XZ - результат работы команды Tukaani, развивающей LZMA Utils. Спецификация открыта и распространяется в общественное достояние.
Ключевые этапы:
- 2001 - Игорь Павлов представляет алгоритм LZMA в составе 7-Zip
- 2008 - выход LZMA2, оптимизированной для многопоточности
- 2009 - первый релиз XZ Utils как отдельного пакета с собственным форматом
- 2010 - переход ядра Linux на XZ для архивов исходников (с 2013 - официально)
- 2014 - Debian переводит формат пакетов .deb на XZ-сжатие данных
- 2018 - Arch Linux делает .pkg.tar.xz основным форматом
- 2022 - стабилизация версии 5.4 с улучшенной многопоточностью
За короткий срок XZ стал доминирующим форматом сжатия в Linux-инфраструктуре.
Ограничения и альтернативы
Когда конвертация в TXZ не оптимальна
- Уже сжатые данные - JPEG, MP4, MP3, ZIP внутри TAR не получат заметного выигрыша при значительной нагрузке на CPU.
- Сценарии с ограниченными ресурсами - на embedded-устройствах с 64-128 МБ RAM сжатие LZMA2 требует слишком много памяти.
- Частая операция архивирования - если бэкап делается ежечасно, скорость GZIP может быть важнее размера.
- Совместимость с очень старыми системами - системы 2000-х годов могут не иметь установленного XZ Utils.
Альтернативные сценарии
Если TXZ по каким-то причинам не подходит:
- TAR -> TGZ - быстрее во всех операциях, классический Unix-стандарт
- TAR -> TBZ2 - середина между скоростью и сжатием для legacy-совместимости
- TAR -> 7Z - аналогичное сжатие плюс шифрование AES-256 и многотомность
- TAR -> ZIP - для отправки получателям без Unix-инструментов
TXZ остаётся оптимальным выбором для современной Linux-инфраструктуры, где важен размер архива при сохранении совместимости с экосистемой.
Для чего используют конвертацию TAR в TXZ
Дистрибуция Linux-пакетов
Подготовка пакетов и tarball-ов для официальных репозиториев Debian, Arch, Fedora, Ubuntu
Холодное хранилище данных
Долгосрочное архивирование редко используемых баз данных, документов, научных корпусов с экономией места
Распространение через CDN
Публикация больших архивов через сети доставки контента с минимизацией трафика и времени загрузки
Резервное копирование в облако
Бэкап на платные облачные сервисы (S3, B2) с прямой экономией на стоимости хранения и передачи
Советы по конвертации TAR в TXZ
Используйте многопоточность для ускорения
На многоядерных процессорах XZ может работать параллельно, разбивая архив на независимые блоки. Это ускоряет сжатие в разы при минимальной потере эффективности
Подбирайте уровень под задачу
Для повседневных задач достаточно уровня 6 (по умолчанию). Уровень 9 экономит дополнительные 2-5% размера, но увеличивает время и память значительно. Для бэкапов с ежедневной ротацией оптимален уровень 4-6