Archiv BZIP2 (.bz2)
Bzip2 StandardníBzip2 (BZ2) je klasický unixový kompresní nástroj a souborový formát bez patentových poplatků, který vytvořil Julian Seward. Využívá Burrows-Wheelerovu transformaci k dosažení výrazně účinnější komprese než klasický Gzip.
Zkontrolovat a metadata
Operační systémy a analyzátory souborů identifikují soubory BZ2 kontrolou počáteční binární sekvence bajtů:
Podpis hlavičky na úrovni bajtů (Magic Bytes)
Operační systémy a analyzátory souborů identifikují soubory BZ2 kontrolou počáteční binární sekvence bajtů:
HEXADECIMÁLNÍ PODPIS (OFFSET 0):
42 5A 68ASCII REPREZENTACE: BZh
Standardizace: Bzip2 Open Source Standard
Technické specifikace
| Architektura kontejneru | Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC |
| Komprese | Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding |
| Endiantita bajtů | Big-Endian bitstream framing |
| Barevné prostory | N/A (Byte Compression Stream) |
| Kanály a struktura | Single-file compressed byte stream |
| Max. rozměry | Unbounded stream length (supports arbitrary file sizes) |
| Průhlednost | 100% bit-exact lossless data preservation |
| Streamování a progresivní načítání | Sequential block-by-block streaming with independent per-block CRC checksums |
Technická srovnávací matice: BZ2 vs konkurence
| Technický atribut | BZ2 (Aktuální) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Základní algoritmus | Burrows-Wheelerova transformace (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Finite State Entropy + LZ77 |
| Komprese vs Gzip | O 10 % až 20 % menší než Gzip | Základní standard | O 20 % až 30 % menší než Gzip | O 10 % až 20 % menší než Gzip |
| Rychlost dekomprese | Pomalá (~30 - 50 MB/s) | Rychlá (~300 MB/s) | Střední (~100 MB/s) | Blesková (>1,5 GB/s) |
| Kontrolní součty bloků | 32bitové CRC pro každý blok | Jednotlivý proud CRC32 | Proud CRC64 | Proud xxHash64 |
Běžné režimy poškození a příručka pro obnovení v hex
Extrakce se přeruší chybou „bzip2: Data integrity error when decompressing".
Hlavní příčina: Překlopený bit v komprimovaném bloku, který způsobuje selhání ověření CRC32 v inverzní permutační matici BWT.
Obnovení: Pomocí nástroje „bzip2recover" lze zachránit nepoškozené bloky v okolí poškozeného sektoru.
Bezpečnostní analýza a vektory útoků na parser
Implementace Bzip2 zahrnují komplexní třídění bitových proudů a analýzu Huffmanových tabulek, které v minulosti trpěly chybami celočíselného přetečení.
Známé vektory útoků
- Celočíselné přetečení při alokaci třídícího pole BWT (např. CVE-2016-3189).
- Zápis mimo vyhrazenou paměť při sestavování Huffmanovy dekódovací tabulky.
- Útok odepření služby (DoS) prostřednictvím patologických vstupních vzorů, které způsobují nejhorší možné kvadratické časy třídění BWT.
Doporučené bezpečnostní postupy:
Historický vývoj a milníky
Klíčové výhody a přednosti
- Trvale překonává klasický Gzip o 10 % až 20 % u zdrojových kódů, systémových logů a textových databází.
- Nezávislá bloková architektura (100k až 900k) obsahuje 32bitové CRC kontrolní součty pro každý blok, což zajišťuje vysokou spolehlivost kontroly integrity.
- Univerzální nativní dostupnost ve všech příkazových řádcích distribucí Linuxu, BSD a macOS.
Technická omezení a nevýhody
- Výrazně pomalejší kompresní a dekompresní rychlosti ve srovnání s moderními algoritmy, jako je Zstandard.
- Pouze jednosouborová komprese: pro zabalení více souborů nebo adresářů je nutné spárování s formátem TAR (.tar.bz2).
- Vyšší využití procesoru během dekomprese než u Gzipu nebo Zstd.
Zajímavé technické drobnosti
- Magické bajty „BZh" jsou zkratkou pro „Burrows-Wheeler Zip Huffman" a za nimi následuje číslice (1 až 9) udávající velikost bloku ve stovkách kilobajtů (např. „BZh9" = 900 KB).
- Zdrojový kód jádra Linuxu byl déle než deset let distribuován výhradně ve formátu .tar.bz2, než přešel na .xz.
- Burrows-Wheelerova transformace komprimuje data nepřímo - permutuje pořadí znaků tak, aby se stejná písmena shlukovala k sobě, čímž je činí snadno komprimovatelnými pomocí Huffmanova kódování.
Často kladené technické otázky
Jaký je rozdíl mezi .gz a .bz2?
.bz2 používá Burrows-Wheelerovu transformaci k dosažení menší velikosti souborů než .gz, ale komprese a dekomprese trvá déle.
Proč má bzip2 příkaz „bzip2recover“?
Protože bzip2 komprimuje data v nezávislých 900 KB blocích, z nichž každý má vlastní kontrolní součet CRC, dokáže nástroj bzip2recover extrahovat nepoškozené bloky, i když je část souboru poškozena.
Jak mohu rozbalit soubor .tar.bz2?
Soubory .tar.bz2 můžete rozbalit přímo ve svém webovém prohlížeči pomocí aplikace File2File.app bez spouštění nástrojů příkazové řádky.