Архів BZIP2 (.bz2)

Відкритий Стандарт

Bzip2 (BZ2) - це класична вільна від патентів утиліта стиснення та формат файлів для Unix, створений Джуліаном Сьюардом (Julian Seward). Формат використовує перетворення Берроуза-Вілера для досягнення значно вищого ступеня стиснення, ніж класичний Gzip.

Аналіз та метадані

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

Виберіть або перетягніть файли сюди

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

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

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

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

ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):

42 5A 68

ASCII-УЯВЛЕННЯ: BZh

Стандартизація: Відкритий стандарт Bzip2

Технічні характеристики

Архітектура контейнераЗаголовок потоку ('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 потоку

Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі

Витягнення переривається помилкою 'bzip2: Data integrity error when decompressing'.

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

Відновлення: Використовуйте утиліту 'bzip2recover' для відновлення неушкоджених блоків навколо пошкодженого сектору.

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

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

Відомі вектори атак

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

Захисні найкращі практики: Декодуйте файли BZ2 за допомогою безпечних для пам'яті декодерів WASM із примусовим обмеженням меж пам'яті.

Історичне походження та віхи

2019Федеріко Мена Кінтверо (Federico Mena Quintero) модернізує супроводження кодової бази bzip2 в межах ініціатив bzip3 та сучасних ініціатив з відкритим кодом.
2000Випущено версію 1.0, яка стабілізувала формат bzip2 в дистрибутивах Linux та менеджері пакетів.
1996Джуліан Сьюард випускає bzip2 0.15 на заміну попередньому формату bzip, який мав проблеми з патентами.

Головні переваги та плюси

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