Архив BZIP2 (.bz2)

Открытый Стандарт

Bzip2 (BZ2) - это классическая свободная от патентов утилита сжатия и формат файлов для Unix, созданный Джулианом Сьюардом. Он использует преобразование Берроуза - Уиллера для достижения значительно более высокой степени сжатия по сравнению с классическим Gzip.

Анализ и метаданные

Операционные системы и анализаторы файлов идентифицируют файлы BZ2 по начальной двоичной последовательности байтов:

Выберите или перетащите файлы сюда

100% конфиденциальное преобразование в браузере - файлы никогда не покидают ваше устройство

или вставьте Ctrl+V
Гарантия конфиденциальности без передачи по сети: 0 байт загружено на внешние серверы. Вся обработка выполняется локально в песочнице вашего браузера.

Сигнатура заголовка на уровне байтов (Magic Bytes)

Операционные системы и анализаторы файлов идентифицируют файлы BZ2 по начальной двоичной последовательности байтов:

HEX-СИГНАТУРА (СМЕЩЕНИЕ 0):

42 5A 68

ПРЕДСТАВЛЕНИЕ ASCII: BZh

Стандартизация: Открытый стандарт Bzip2 (Bzip2 Open Source Standard)

Технические спецификации

Архитектура контейнераЗаголовок потока ('BZh' + цифра размера блока 1-9), за которым следуют сжатые блоки данных и 32-битная контрольная сумма CRC
СжатиеПреобразование Берроуза - Уиллера (BWT), преобразование с перемещением в начало (MTF) и кодирование Хаффмана
Порядок байтов (Endianness)Поток битов с прямым порядком байтов (Big-Endian)
Цветовые пространстваНе применимо (поток байтов сжатия)
Каналы и структураПоток сжатых байтов одного файла
Макс. габаритыНеограниченная длина потока (поддерживает произвольные размеры файлов)
Прозрачность100% точное сохранение данных без потерь на уровне битов
Потоковая передача и прогрессивная загрузкаПоследовательная потоковая передача блок за блоком с независимыми CRC-суммами для каждого блока

Техническая матрица сравнения: BZ2 против конкурентов

Технический атрибутBZ2 (Текущий)GZXZZSTD
Базовый алгоритмПреобразование Берроуза - Уиллера (BWT)Deflate (LZ77 + Хаффман)LZMA / LZMA2Энтропия конечных состояний + LZ77
Сжатие по сравнению с GzipНа 10% - 20% меньше, чем GzipБазовый стандартНа 20% - 30% меньше, чем GzipНа 10% - 20% меньше, чем Gzip
Скорость распаковкиНизкая (~30 - 50 МБ/с)Высокая (~300 МБ/с)Умеренная (~100 МБ/с)Молниеносная (>1.5 ГБ/с)
Блочные контрольные суммы32-битный CRC для каждого блокаCRC32 для всего потокаCRC64 для всего потокаxxHash64 для всего потока

Типичные режимы повреждения и руководство по восстановлению в HEX

Распаковка прерывается сообщением 'bzip2: Data integrity error when decompressing'.

Первопричина: Искаженный бит в сжатом блоке, из-за чего обратная матрица перестановок BWT не проходит валидацию CRC32.

Восстановление: Используйте утилиту 'bzip2recover' для извлечения неповрежденных блоков, окружающих поврежденный сектор.

Анализ безопасности и векторы атак на парсер

Реализации Bzip2 включают сложную сортировку битовых потоков и синтаксический анализ таблиц Хаффмана, в которых исторически возникали уязвимости переполнения целых чисел.

Известные векторы атак

  • Переполнение целых чисел при выделении памяти под массив сортировки BWT (например, CVE-2016-3189).
  • Запись за пределами выделенного буфера при формировании таблицы декодирования Хаффмана.
  • Отказ в обслуживании из-за патологических входных паттернов, вызывающих худшее квадратичное время сортировки BWT.

Защитные лучшие практики: Декодируйте файлы BZ2 с использованием безопасных для памяти WASM-декодеров с жестко ограниченными границами памяти.

Исторические истоки и вехи

2019Федерико Мена Кинтеро проводит модернизацию поддержки кодовой базы bzip2 в рамках инициатив bzip3 и современных проектов с открытым исходным кодом.
2000Выпуск версии 1.0, стабилизировавшей формат bzip2 во всех дистрибутивах Linux и менеджерах пакетов.
1996Джулиан Сьюард выпускает bzip2 0.15 на замену более раннему формату bzip, имевшему патентные проблемы.

Ключевые преимущества и плюсы

  • Стабильно превосходит классический Gzip на 10 - 20% при обработке архивов исходного кода (tarball), системных логов и текстовых баз данных.
  • Независимая блочная архитектура (от 100 КБ до 900 КБ) включает 32-битные CRC-суммы для каждого блока в целях надежной проверки целостности.
  • Универсальная нативная доступность во всех дистрибутивах Linux, BSD и macOS с интерфейсом командной строки.

Технические ограничения и минусы

  • Существенно более низкая скорость сжатия и распаковки по сравнению с современными алгоритмами вроде Zstandard.
  • Сжатие только одного файла: требует объединения с TAR (.tar.bz2) для упаковки нескольких файлов или директорий.
  • Более высокое потребление ЦП при распаковке по сравнению с Gzip или Zstd.

Интересные технические факты

  • Сигнатура «BZh» расшифровывается как «Burrows-Wheeler Zip Huffman» (зип Хаффмана на базе преобразования Берроуза - Уиллера) и сопровождается цифрой (от «1» до «9»), обозначающей размер блока в сотнях килобайт (например, «BZh9» = 900 КБ).
  • Исходный код ядра Linux распространялся исключительно в формате .tar.bz2 более десяти лет до перехода на .xz.
  • Преобразование Берроуза - Уиллера не сжимает данные напрямую; оно переставляет порядок символов так, чтобы одинаковые буквы собирались вместе, что делает их тривиально сжимаемыми с помощью кодирования Хаффмана.

Часто задаваемые технические вопросы

В чем разница между .gz и .bz2?

.bz2 использует преобразование Берроуза - Уиллера для достижения меньшего размера файлов по сравнению с .gz, но требует больше времени для сжатия и распаковки.

Почему в bzip2 есть команда 'bzip2recover'?

Поскольку bzip2 сжимает данные в независимые блоки по 900 КБ, каждый из которых имеет собственную CRC-сумму, bzip2recover может извлекать неповрежденные блоки, даже если часть файла повреждена.

Как распаковать файл .tar.bz2?

Вы можете распаковывать файлы .tar.bz2 прямо в веб-браузере с помощью File2File.app без запуска утилит командной строки.