BZIP2 archív (.bz2)
Bzip2 ŠtandardBzip2 (BZ2) je klasický unixový kompresný nástroj a formát súborov bez patentov, ktorý vytvoril Julian Seward. Využíva Burrows-Wheelerovu transformáciu na dosiahnutie výrazne lepšej kompresie než klasický Gzip.
Preskúmať a metadáta
Operačné systémy a analyzátory súborov identifikujú súbory BZ2 kontrolou počiatočnej binárnej bajtovej sekvencie:
Podpis hlavičky na úrovni bajtov (Magic Bytes)
Operačné systémy a analyzátory súborov identifikujú súbory BZ2 kontrolou počiatočnej binárnej bajtovej sekvencie:
HEXADECIMÁLNY PODPIS (OFFSET 0):
42 5A 68ASCII REPREZENTÁCIA: BZh
Štandardizácia: Bzip2 Open Source Standard
Technické špecifikácie
| Architektúra kontajnera | Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC |
| Kompresia | Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding |
| Poradie bajtov (Endianness) | Big-Endian bitstream framing |
| Farebné priestory | N/A (Byte Compression Stream) |
| Kanály a štruktúra | Single-file compressed byte stream |
| Max. rozmery | Unbounded stream length (supports arbitrary file sizes) |
| Priehľadnosť | 100% bit-exact lossless data preservation |
| Streamovanie a postupné načítavanie | Sequential block-by-block streaming with independent per-block CRC checksums |
Technická porovnávacia matica: BZ2 vs konkurenti
| Technický atribút | BZ2 (Aktuálne) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Základný algoritmus | Burrows-Wheelerova transformácia (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Finite State Entropy + LZ77 |
| Kompresia vs Gzip | O 10 % - 20 % menší než Gzip | Základný štandard | O 20 % - 30 % menší než Gzip | O 10 % - 20 % menší než Gzip |
| Rýchlosť dekompresie | Pomalá (~30 - 50 MB/s) | Rýchla (~300 MB/s) | Mierna (~100 MB/s) | Veľmi rýchla (>1,5 GB/s) |
| Kontrolné súčty blokov | 32-bitové CRC pre každý blok | Jednoduchý CRC32 prúdu | CRC64 prúdu | xxHash64 prúdu |
Bežné režimy poškodenia a príručka na obnovu v hexadecimálnom kóde
Rozbaľovanie sa preruší s hlásením „bzip2: Data integrity error when decompressing".
Hlavná príčina: Zmenený bit v komprimovanom bloku, čo spôsobuje zlyhanie overenia CRC32 v inverznej permutačnej matici BWT.
Obnova: Použite nástroj „bzip2recover" na záchranu nepoškodených blokov obklopujúcich poškodený sektor.
Bezpečnostná analýza a vektory útokov na parser
Implementácie Bzip2 zahŕňajú komplexné triedenie bitového prúdu a analýzu Huffmanových tabuliek, ktoré v minulosti trpeli chybami pretečenia celých čísel.
Známe vektory útokov
- Pretečenie celých čísel pri alokácii triediaceho poľa BWT (napr. CVE-2016-3189).
- Zápis mimo vyhradenú pamäť pri zostavovaní tabuľky na dekódovanie pomocou Huffmanovho kódovania.
- Odopretie služby (DoS) prostredníctvom patologických vstupných vzorov, ktoré spôsobujú najhorší prípad kvadratických časov triedenia BWT.
Najlepšie obranné postupy:
Historický pôvod a míľniky
Kľúčové výhody a prednosti
- Konzistentne prekonáva klasický Gzip o 10 % až 20 % pri zdrojových tarbaloch, systémových logoch a textových databázach.
- Nezávislá bloková architektúra (100k až 900k) obsahuje 32-bitové CRC kontrolné súčty pre každý blok na zabezpečenie robustnej kontroly integrity.
- Univerzálna natívna dostupnosť vo všetkých distribúciách pre príkazový riadok v systémoch Linux, BSD a macOS.
Technické obmedzenia a nevýhody
- Výrazne pomalšia rýchlosť kompresie a dekompresie v porovnaní s modernými algoritmami, ako je Zstandard.
- Kompresia iba pre jeden súbor: vyžaduje spárovanie s archívom TAR (.tar.bz2) na zabalenie viacerých súborov alebo adresárov.
- Vyššie zaťaženie procesora počas dekompresie v porovnaní s Gzip alebo Zstd.
Zaujímavé technické drobnosti
- Magické bajty „BZh" znamenajú „Burrows-Wheeler Zip Huffman", po ktorých nasleduje číslica („1" až „9") označujúca veľkosť bloku v stovkách kilobajtov (napr. „BZh9" = 900 KB).
- Zdrojový kód jadra systému Linux sa distribuoval výhradne vo formáte .tar.bz2 viac ako desaťročie, než prešiel na .xz.
- Burrows-Wheelerova transformácia nestláča dáta priamo; permutuje poradie znakov tak, že rovnaké písmená sa zoskupia k sebe, čo uľahčuje ich kompresiu pomocou Huffmanovho kódovania.
Často kladené technické otázky
Aký je rozdiel medzi .gz a .bz2?
Prípona .bz2 využíva Burrows-Wheelerovu transformáciu na dosiahnutie menšej veľkosti súboru ako .gz, ale kompresia a dekompresia trvajú dlhšie.
Prečo má bzip2 príkaz „bzip2recover“?
Pretože bzip2 komprimuje dáta v nezávislých 900 KB blokoch, pričom každý má vlastný súčet CRC, nástroj bzip2recover dokáže extrahovať nepoškodené bloky, aj keď je časť súboru poškodená.
Ako môžem extrahovať súbor .tar.bz2?
Súbory .tar.bz2 môžete rozbaliť priamo vo webovom prehliadači pomocou aplikácie File2File.app bez nutnosti spúšťania nástrojov príkazového riadka.