Archiv BZIP2 (.bz2)
Bzip2 StandardníBzip2 (BZ2) je klasický unixový kompresní nástroj a souborový formát, na který se nevztahují patenty, který vytvořil Julian Seward. Využívá Burrows-Wheelerovu transformaci k dosažení výrazně účinnější komprese než klasický Gzip.
Kontrola 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 (POSUN 0):
42 5A 68ASCII REPREZENTACE: BZh
Standardizace: Bzip2 Open Source Standard
Technické specifikace
| Architektura kontejneru | Hlavička proudu („BZh“ a číslice velikosti bloku od 1 do 9), za níž následují komprimované datové bloky a 32bitový kontrolní součet CRC |
| Komprese | Burrowsova-Wheelerova transformace (BWT), transformace Move-to-Front (MTF) a Huffmanovo kódování |
| Pořadí bajtů | Big-endian rámování bitového proudu |
| Barevné prostory | Nevztahuje se (proud komprimovaných bajtů) |
| Kanály a struktura | Jednosouborový komprimovaný bajtový proud |
| Max. rozměry | Neomezená délka proudu (podporuje soubory libovolné velikosti) |
| Průhlednost | 100% bezztrátové zachování dat bit po bitu |
| Streamování a progresivní načítání | Sekvenční streamování po blocích s nezávislými kontrolními součty CRC pro každý blok |
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ž u Gzipu | Základní standard | O 20 % až 30 % menší než u Gzipu | O 10 % až 20 % menší než u Gzipu |
| Rychlost dekomprese | Pomalá (~30 až 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: Chyba integrity dat při dekompresi“.
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 parsování Huffmanových tabulek, při nichž se v minulosti vyskytovaly chyby celočíselného přetečení.
Známé vektory útoků
- Celočíselné přetečení při alokaci třídicího pole BWT (např. CVE-2016-3189).
- Zápis mimo vyhrazenou paměť při sestavování Huffmanovy dekódovací tabulky.
- Odepření služby prostřednictvím patologických vstupních vzorů, které vedou k nejhoršímu případu kvadratické časové složitosti třídění BWT.
Doporučené bezpečnostní postupy: Dekódujte soubory BZ2 pomocí dekodérů WASM bezpečně pracujících s pamětí a s vynucenými hranicemi paměti.
Historický vývoj a milníky
Klíčové výhody a přednosti
- U zdrojových kódů, systémových protokolů a textových databází dosahuje trvale o 10 % až 20 % lepších výsledků než klasický Gzip.
- Nezávislá bloková architektura (100k až 900k) obsahuje 32bitové CRC kontrolní součty pro každý blok, což zajišťuje vysokou spolehlivost kontroly integrity.
- Je nativně dostupný v mnoha distribucích Linuxu, BSD a macOS; zahrnutí se liší podle distribuce.
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 data přímo nekomprimuje; permutuje pořadí znaků tak, aby se stejná písmena shlukovala k sobě.
Č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 i dekomprese trvají 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.