BZIP2 архив (.bz2)

Bzip2 Стандарт

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

Инспектиране и метаданни

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

Изберете или пуснете файлове тук

100% поверително конвертиране в браузъра - файловете никога не напускат вашето устройство

или поставете Ctrl+V
Гаранция за поверителност с нулево мрежово предаване: 0 байта са качени на външни сървъри. Цялата обработка се извършва локално в пясъчниците на вашия браузър.

Байтов подпис на хедъра (Magic Bytes)

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

HEX ПОДПИС (ОФСЕТ 0):

42 5A 68

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

Стандартизация: Bzip2 Open Source Standard

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

Контейнерна архитектураStream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC
КомпресияBurrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding
Поредност на байтовете (Endianness)Big-Endian bitstream framing
Цветови пространстваN/A (Byte Compression Stream)
Канали и структураSingle-file compressed byte stream
Максимални размериUnbounded stream length (supports arbitrary file sizes)
Прозрачност100% bit-exact lossless data preservation
Стрийминг и прогресивно зарежданеSequential block-by-block streaming with independent per-block CRC checksums

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

Технически атрибутBZ2 (Текущ)GZXZZSTD
Основен алгоритъмТрансформация на Бъроуз-Уилър (BWT)Deflate (LZ77 + Huffman)LZMA / LZMA2Ентропия на крайните състояния + LZ77
Компресия спрямо Gzip10% - 20% по-малък от GzipБазов стандарт20% - 30% по-малък от Gzip10% - 20% по-малък от Gzip
Скорост на декомпресияБавна (~30-50 MB/s)Бърза (~300 MB/s)Умерена (~100 MB/s)Много бърза (>1.5 GB/s)
Блокови контролни суми32-битов CRC на блокCRC32 за целия потокCRC64 за потокаxxHash64 за потока

Често срещани режими на повреда и ръководство за хекс възстановяване

Извличането прекъсва с 'bzip2: Data integrity error when decompressing'.

Първопричина: Обърнат бит в компресирания блок, който кара обратната матрица на пермутацията на BWT да неуспее при CRC32 валидацията.

Възстановяване: Използвайте помощната програма 'bzip2recover', за да възстановите недеформираните блокове около повредения сектор.

Анализ на сигурността и вектори на атака към парсера

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

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

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

Защитни добри практики:

Исторически произход и етапи

2019Федерико Мена Кинтеро модернизира поддръжката на кодовата база на bzip2 в рамките на bzip3 и съвременните инициативи с отворен код.
2000Публикувана е версия 1.0, която стабилизира формата bzip2 в Linux дистрибуциите и пакетиращите програми.
1996Джулиан Сюард издава bzip2 0.15, за да замени по-ранния формат bzip, който е имал патентни проблеми.

Основни предимства и плюсове

  • Постоянно надминава класическия Gzip с 10% до 20% при изходен код (tarballs), системни логове и текстови бази данни.
  • Независимата блокова архитектура (100k до 900k) включва 32-битови CRC контролни суми за всеки блок за надеждна проверка на целостта.
  • Универсална родна наличност във всички дистрибуции на командния ред за Linux, BSD и macOS.

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

  • Значително по-бавни скорости на компресиране и декомпресиране в сравнение с модерни алгоритми като Zstandard.
  • Компресиране само на един файл: изисква сдвояване с TAR (.tar.bz2) за пакетиране на множество файлове или директории.
  • По-висока употреба на процесора по време на декомпресиране в сравнение с Gzip или Zstd.

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

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

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

Каква е разликата между .gz и .bz2?

.bz2 използва трансформационния алгоритъм на Burrows-Wheeler за постигане на по-малки файлови размери от .gz, но му отнема повече време за компресиране и декомпресиране.

Защо bzip2 има команда 'bzip2recover'?

Тъй като bzip2 компресира данните в независими блокове от 900 KB, всеки със собствен CRC код, bzip2recover може да извлече незасегнатите блокове дори ако част от файла е повредена.

Как мога да извлека .tar.bz2 файл?

Можете да разархивирате .tar.bz2 файлове директно във вашия уеб браузър с File2File.app, без да се налага да стартирате инструменти с команден ред.