Перетащите файлы или выберите
Вы можете конвертировать 3 файла до 10 МБ каждый
Перетащите файлы или выберите
Вы можете конвертировать 3 файла до 10 МБ каждый
Что такое конвертация TXZ в TBZ2?
Конвертация TXZ в TBZ2 - это перепаковка архива со сменой алгоритма сжатия с современного XZ (LZMA2) на классический BZIP2 при сохранении внутреннего TAR-контейнера. Оба формата строятся по одной схеме - "архивация TAR + потоковое сжатие" - но различаются принципами сжатия. TXZ (TAR.XZ) появился в 2009 году, использует словарный алгоритм LZMA2 и стал стандартом современных Linux-дистрибутивов. TBZ2 (TAR.BZ2) был представлен в 1996 году Джулианом Сьюардом и применяет преобразование Барроуза-Уилера (BWT) совместно с кодированием Хаффмана. До массового внедрения XZ именно BZIP2 считался "тяжёлым" сжатием для Unix-окружений, превосходящим GZIP по плотности упаковки.
Основная причина перехода с TXZ на TBZ2 - совместимость со старыми Unix-системами и встраиваемыми устройствами, где утилита xz отсутствует или работает нестабильно. BZIP2 десятилетиями был частью базовых утилит UNIX-семейства, поэтому он встречается в любом дистрибутиве Linux 2000-х годов, в Solaris, AIX, HP-UX, FreeBSD старых версий, в minimal-сборках busybox. Если архив должен открываться на старом сервере, контроллере или встроенной системе - формат TBZ2 является более надёжным выбором, чем TXZ.
При конвертации TXZ распаковывается до исходного TAR-потока, после чего этот поток сжимается заново алгоритмом BZIP2. Содержимое архива не меняется, файлы остаются байт в байт идентичными, сохраняются структура каталогов, права доступа Unix, временные метки, владельцы. Меняется только степень сжатия: TBZ2 обычно даёт результат на 15-30% больше, чем TXZ, поскольку BWT уступает LZMA2 в эффективности на современных типах данных.
Технические различия форматов TXZ и TBZ2
Алгоритмы сжатия
TXZ использует LZMA2 - усовершенствованную версию алгоритма Лемпеля-Зива-Маркова. Принцип работы: алгоритм строит словарь длиной до нескольких гигабайт и ищет в нём повторяющиеся последовательности данных. Для каждого совпадения записывается компактная ссылка вместо самих данных. К результату применяется арифметический кодер с контекстной моделью, что даёт максимальное приближение к энтропии источника. Сжатие медленное, но распаковка относительно быстрая.
TBZ2 применяет BZIP2 - комбинацию преобразования Барроуза-Уилера (BWT), Move-to-Front (MTF) трансформации, Run-Length кодирования и кодирования Хаффмана. BWT переставляет байты во входном блоке так, чтобы похожие байты группировались рядом, после чего MTF и Хаффман эффективно сжимают результат. Размер блока ограничен - от 100 до 900 КБ. Алгоритм работает блоками независимо, что упрощает параллельную обработку (pbzip2), но не позволяет находить дальние повторения как LZMA2.
Сравнительная таблица возможностей
| Характеристика | TXZ | TBZ2 |
|---|---|---|
| Год создания | 2009 (XZ) / 1979 (TAR) | 1996 (BZIP2) / 1979 (TAR) |
| Базовый алгоритм | LZMA2 (словарный) | BZIP2 (BWT + Хаффман) |
| Размер блока/словаря | до нескольких ГБ | 100-900 КБ |
| Степень сжатия | Лучшая для Unix | На 15-30% хуже |
| Скорость сжатия | Медленнее | Медленнее |
| Скорость распаковки | Быстрая | Медленнее (CPU-нагрузка) |
| Параллельная обработка | xz threading | pbzip2 |
| Возраст в репозиториях | Современные дистрибутивы | Все Unix десятилетиями |
| Подходит для long-term archive | Да, лидер | Да, классика |
Размер архива: чего ожидать
Соотношение размеров TXZ и TBZ2 для типичных данных:
| Тип данных | Исходный размер | TXZ | TBZ2 | Рост TBZ2 |
|---|---|---|---|---|
| Исходный код проекта | 100 МБ | 12-15 МБ | 16-20 МБ | 30-35% |
| Текстовые документы | 50 МБ | 8-10 МБ | 10-13 МБ | 25-30% |
| Дамп SQL базы данных | 200 МБ | 20-30 МБ | 26-38 МБ | 25-30% |
| XML/JSON логи | 1 ГБ | 30-60 МБ | 45-90 МБ | 50% |
| Изображения JPG | 500 МБ | 495-498 МБ | 496-499 МБ | минимально |
| Видеофайлы MP4 | 1 ГБ | 0.99-1 ГБ | 0.99-1 ГБ | минимально |
| Смешанный контент | 250 МБ | 100-150 МБ | 130-180 МБ | 20-25% |
Преимущество TXZ заметнее всего на текстах и логах с большим количеством повторений на длинных дистанциях, так как словарь LZMA2 видит весь архив целиком. На однотипных небольших файлах разница менее выражена. На уже сжатых данных оба формата практически бесполезны.
Когда необходима конвертация TXZ в TBZ2
Поддержка устаревших Unix-систем
Главный сценарий, где TBZ2 остаётся актуальным:
- Серверы и рабочие станции с устаревшей ОС - Linux-дистрибутивы 2000-х (RHEL 4, CentOS 5, Debian Lenny), Solaris 9-10, AIX 5, HP-UX 11i не имели поддержки XZ из коробки.
- Встраиваемые системы - роутеры, IP-камеры, NAS, IoT-устройства часто построены на минимальных образах Linux без xz.
- Промышленные контроллеры - SCADA-системы и АСУ ТП работают на проверенных временем дистрибутивах, где BZIP2 - стандартная утилита.
- Восстановительные среды - многие LiveCD, rescue-диски и инсталляторы прошлых лет не включают xz.
- Минимальные образы busybox - стандартные сборки имеют bzip2, но не xz.
Совместимость с архивными скриптами
В корпоративной среде существуют системы автоматизации, написанные годы или десятилетия назад:
- Системы бэкапов на BZIP2 - корпоративные backup-скрипты, которые ждут именно tar.bz2 на входе.
- CI/CD на старых билд-серверах - сборочные конвейеры, не обновлявшиеся годами.
- Журналируемые архивы - системы хранения логов, рассчитанные на формат TBZ2.
- Специализированные дистрибутивы - научные пакеты, образы для эмуляции старого ПО.
Случаи лучшего распараллеливания
В некоторых сценариях BZIP2 эффективнее благодаря независимым блокам:
- Параллельная распаковка - утилита pbzip2 распаковывает блоки одновременно на нескольких ядрах.
- Восстановление из частично повреждённых архивов - битая часть портит только один блок 100-900 КБ, остальные блоки читаются.
- Потоковая обработка большого архива - блоки можно распаковывать порциями без удержания всего словаря в памяти.
Совместимость с библиотеками распаковки
Многие приложения и языки имеют поддержку BZIP2 в стандартных библиотеках:
- Python - модуль bz2 в стандартной библиотеке, в отличие от lzma модуль был с самых ранних версий.
- Ruby - класс Bzip2, более распространён чем поддержка XZ.
- PHP - расширение bz2 включается в стандартные сборки.
- Java - Apache Commons Compress поддерживает оба, но bzip2 лучше протестирован.
- Старые версии libarchive, 7-Zip и WinRAR - имеют BZIP2 от рождения, XZ - в более новых версиях.
Процесс конвертации: что происходит с архивом
Этапы преобразования
Чтение заголовка XZ - проверка магического числа, версии формата, размера словаря и метода контрольных сумм.
Декодирование LZMA2 - алгоритм восстанавливает исходный TAR-поток. Память пропорциональна словарю (обычно 64-256 МБ).
Проверка целостности - SHA-256 (или CRC32/CRC64) рассчитывается и сравнивается с заявленной в архиве.
Анализ TAR-потока - формат TAR не меняется, его содержимое передаётся как есть на следующий этап.
Кодирование BZIP2 - TAR-поток разбивается на блоки 100-900 КБ. Каждый блок проходит BWT-преобразование, затем MTF, RLE и Хаффман-кодирование. Накладные расходы CPU выше чем у DEFLATE/GZIP, но ниже чем у LZMA2 при сжатии.
Запись BZIP2-контейнера - блоки записываются последовательно с заголовком "BZh" в начале файла, контрольной суммой CRC32 для каждого блока и общим CRC32 в конце потока.
Финализация файла - архив получает расширение .tar.bz2 или .tbz2.
Что сохраняется без изменений
- Все файлы внутри архива остаются байт в байт идентичными
- Структура каталогов (TAR-заголовки не меняются)
- Имена файлов, включая Unicode и длинные пути через PAX-расширение
- Числовые UID и GID владельцев
- Права доступа Unix (включая setuid, setgid, sticky)
- Временные метки модификации, доступа и создания
- Расширенные атрибуты xattr (если были в TXZ)
- Символические и жёсткие ссылки
Что меняется
- Алгоритм сжатия - LZMA2 заменяется на BZIP2
- Размер архива - обычно увеличивается на 15-30%
- Контрольные суммы - SHA-256 в XZ заменяется на CRC32 в BZIP2 (более слабая защита)
- Структура контейнера - один поток XZ становится потоком BZIP2-блоков
- Размер словаря/блока - до гигабайт в XZ против сотен килобайт в BZIP2
Сравнение TBZ2 с другими форматами
TBZ2 против TGZ
TGZ (TAR.GZ) использует алгоритм DEFLATE.
| Критерий | TBZ2 | TGZ |
|---|---|---|
| Степень сжатия | Высокая | Средняя |
| Скорость распаковки | Средняя | Очень высокая |
| Использование CPU | Заметное | Минимальное |
| Возраст формата | 1996 | 1992 |
| Распространённость | Высокая | Максимальная |
TBZ2 жертвует скоростью ради лучшего сжатия по сравнению с TGZ.
TBZ2 против TXZ
Прямое сравнение двух "тяжёлых" форматов Unix:
| Критерий | TBZ2 | TXZ |
|---|---|---|
| Алгоритм | BWT | LZMA2 |
| Степень сжатия | Базовая для тяжёлых | На 15-30% лучше |
| Скорость распаковки | Медленнее | Быстрее |
| Поддержка в старых системах | Повсеместная | Ограниченная |
| Размер словаря | 900 КБ | до нескольких ГБ |
TXZ - современный лидер по сжатию, TBZ2 - проверенная классика для старых систем.
TBZ2 против ZIP
| Критерий | TBZ2 | ZIP |
|---|---|---|
| Архивация и сжатие | TAR + BZIP2 | В одном формате |
| POSIX-атрибуты | Полная поддержка | Ограниченная |
| Доступ к файлу | Последовательный | По оглавлению |
| Поддержка ОС "из коробки" | Только Unix | Все ОС |
ZIP лучше для пользователей Windows, TBZ2 - для Unix-серверов.
Совместимость и поддержка TBZ2
Операционные системы
TBZ2 работает в любой Unix-системе и в большинстве не-Unix:
- Linux - bzip2 - стандартная утилита базовых репозиториев в любом дистрибутиве с конца 1990-х.
- macOS - bzip2 встроен в систему, доступен из Terminal без установки.
- FreeBSD, OpenBSD, NetBSD - часть базовой системы.
- Solaris, AIX, HP-UX - bzip2 присутствует с начала 2000-х.
- Windows - 7-Zip, WinRAR, Bandizip распаковывают TBZ2 без дополнительных настроек.
- Android, iOS - через приложения вроде ZArchiver и Documents by Readdle.
- Встраиваемые Linux - busybox со включённым bzip2 в большинстве сборок.
Поддержка в языках программирования
| Язык | Стандартная поддержка |
|---|---|
| Python | Модуль bz2 |
| Java | java.util.zip + Apache Commons Compress |
| C / C++ | libbzip2 |
| Ruby | Bzip2 |
| Perl | Compress::Bzip2 |
| PHP | Расширение bz2 |
| Go | compress/bzip2 (только распаковка в стандартной) |
Это делает BZIP2 удобным форматом для серверной автоматизации в смешанных окружениях.
История и устойчивость формата
- 1996 - Джулиан Сьюард опубликовал bzip2 в свободном доступе
- 1999 - bzip2 стал стандартом в большинстве дистрибутивов Linux
- 2002 - распространение pbzip2 для параллельной обработки
- 2010 - формат стабилизирован, редко обновляется
- 2019 - выпуск bzip2 1.0.8 после длительного перерыва
За 30 лет существования BZIP2 не имел критичных изменений формата, что обеспечивает долгосрочную совместимость.
Ограничения и альтернативы
Когда конвертация в TBZ2 не оптимальна
- Современные дистрибутивы Linux - в Arch, Fedora, Ubuntu стандартом стал XZ, и понижение до BZIP2 не даёт выгод.
- Архивы для долгого хранения - TXZ компактнее, целостность защищена SHA-256 (в BZIP2 только CRC32).
- Большие архивы с однотипным содержимым - LZMA2 заметно эффективнее при наличии длинных повторений.
- Дистрибуция через современные пакетные менеджеры - apt, dnf, pacman ждут TAR.XZ, переход на TBZ2 потребует ручной обработки.
Альтернативные сценарии
Если совместимость со старыми системами не нужна:
- TXZ -> TGZ - для случаев, когда нужна быстрая распаковка вместо сжатия
- TXZ -> ZIP - для смешанных аудиторий, включая Windows
- TXZ -> 7Z - для лучшего сжатия с навигацией по архиву
Для большинства задач сегодня TBZ2 уже не лучший выбор, но в нишевых сценариях совместимости со старыми Unix-системами он остаётся незаменимым.
Для чего используют конвертацию TXZ в TBZ2
Поддержка старых серверов
Доставка архивов на Linux-системы 2000-х годов и Unix-варианты без установленной поддержки XZ
Встраиваемые устройства
Передача обновлений и данных на роутеры, NAS, IoT-устройства с минимальным busybox-окружением
Параллельная распаковка большого архива
Использование pbzip2 для одновременного декодирования блоков на многоядерных серверах
Корпоративные системы на BZIP2
Совместимость с существующими backup-скриптами и пайплайнами, ожидающими формат tar.bz2
Советы по конвертации TXZ в TBZ2
Размер архива вырастет
TBZ2 даёт сжатие на 15-30% хуже, чем TXZ. Учитывайте это при ограниченной пропускной способности сети или дисковом пространстве
Распаковка нагружает CPU
BZIP2 при распаковке тратит больше процессорного времени, чем LZMA2 в TXZ. На слабых устройствах открытие архива займёт заметное время