BZIP2 архив (.bz2)

Стандарт Стандарт

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

Проверка и метаданни

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

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

Поверително - файловете никога не напускат устройството ви

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

Байтов подпис на заглавката (сигнатурни байтове)

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

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

42 5A 68

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

Стандартизация: Стандарт с отворен код за Bzip2

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

Контейнерна архитектураЗаглавна част на потока („BZh“ и цифра за размера на блока от 1 до 9), последвана от компресирани блокове с 32-битов CRC
КомпресияТрансформация на Бъроуз-Уилър (BWT), трансформация Move-to-Front (MTF) и кодиране на Хъфман
Поредност на байтовете (Endianness)Обрамчването на битовия поток е в ред от старшия към младшия байт (Big-Endian).
Цветови пространстваНеприложимо (поток за компресия на байтове)
Канали и структураКомпресиран поток от байтове на един файл
Максимални размериНеограничена дължина на потока (поддържа файлове с произволен размер)
Прозрачност100% беззагубно запазване на данните до последния бит
Поточно предаване и прогресивно зарежданеПоследователно поточно предаване блок по блок с независима CRC проверка за всеки блок

Техническа сравнителна матрица: 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'.

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

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

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

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

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

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

Най-добри практики за защита: Декодирайте BZ2 файлове с помощта на безопасни за паметта WASM декодери с наложени ограничения на паметта.

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

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

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

  • При архиви с изходен код, системни журнали и текстови бази данни Bzip2 постоянно постига с 10% до 20% по-висока компресия от класическия Gzip.
  • Независимата блокова архитектура (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, без да се налага да стартирате инструменти с команден ред.