Arhiv BZIP2 (.bz2)
Bzip2 StandardBzip2 (BZ2) je klasični Unix stiskalni pripomoček in format datoteke brez patentov, ki ga je ustvaril Julian Seward. Uporablja Burrows-Wheelerjevo transformacijo, s katero dosega znatno boljše stiskanje kot klasični Gzip.
Pregled in metapodatki
Operacijski sistemi in analizatorji datotek identificirajo datoteke BZ2 s pregledom vodilnega binarnega zaporedja bajtov:
Podpis glave na ravni bajtov (Čarobni bajti)
Operacijski sistemi in analizatorji datotek identificirajo datoteke BZ2 s pregledom vodilnega binarnega zaporedja bajtov:
PODPIS HEX (ZAMIK 0):
42 5A 68REPREZENTACIJA ASCII: BZh
Standardizacija: Bzip2 Open Source Standard
Tehnične specifikacije
| Arhitektura vsebnika | Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC |
| Stiskanje | Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding |
| Vrstni red bajtov | Big-Endian bitstream framing |
| Barvni prostori | N/A (Byte Compression Stream) |
| Kanali in struktura | Single-file compressed byte stream |
| Največje dimenzije | Unbounded stream length (supports arbitrary file sizes) |
| Prosojnost | 100% bit-exact lossless data preservation |
| Pretočno in progresivno predvajanje | Sequential block-by-block streaming with independent per-block CRC checksums |
Tehnična primerjalna matrika: BZ2 proti konkurenci
| Tehnični atribut | BZ2 (Trenutno) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Osnovni algoritem | Burrows-Wheelerjeva transformacija (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Entropija končnih stanj + LZ77 |
| Stiskanje v primerjavi z Gzipom | 10 % - 20 % manjše od Gzipa | Osnovni standard | 20 % - 30 % manjše od Gzipa | 10 % - 20 % manjše od Gzipa |
| Hitrost razširjanja | Počasno (~30-50 MB/s) | Hitro (~300 MB/s) | Zmerno (~100 MB/s) | Izjemno hitro (>1,5 GB/s) |
| Vsote blokov | 32-bitni CRC na blok | Enosmerni CRC32 | Pretočni CRC64 | Pretočni xxHash64 |
Pogosti načini okvar in vodič za heksadecimalno obnovo
Razširjanje se prekine z napako 'bzip2: Data integrity error when decompressing'.
Glavni vzrok: Obrnjen bit v stisnjenem bloku, zaradi česar obratna permutacijska matrika BWT ne prestane preverjanja CRC32.
Sanacija: Uporabite pripomoček 'bzip2recover' za reševanje nepoškodovanih blokov okoli poškodovanega sektorja.
Varnostna analiza in napadalni vektorji razčlenjevalnika
Izvedbe bzip2 vključujejo zapleteno razvrščanje bitnih tokov in razčlenjevanje Huffmanovih tabel, v katerih so se zgodovinsko pojavljale napake prekoračitve celih števil.
Znani vektorji napada
- Prekoračitev celih števil pri dodeljevanju polja za razvrščanje BWT (npr. CVE-2016-3189).
- Zapisovanje izven meja med sestavljanjem tabele za dekodiranje Huffman.
- Zavrnitev storitve zaradi patoloških vzorcev vnosa, ki povzročajo najslabši možni čas kvadratnega razvrščanja BWT.
Obrambne najboljše prakse:
Zgodovinski izvor in mejniki
Ključne prednosti
- Dosledno prekaša klasični Gzip za 10 % do 20 % pri izvorni kodi arhivov tar, sistemskih dnevnikih in besedilnih podatkovnih bazah.
- Neodvisna bločna arhitektura (od 100k do 900k) vključuje 32-bitne vsote CRC na posamezen blok za zanesljivo preverjanje celovitosti.
- Univerzalna izvorna dostopnost v vseh ukaznih distribucijah Linux, BSD in macOS.
Tehnične omejitve in slabosti
- Znatno počasnejša hitrost stiskanja in razširjanja v primerjavi s sodobnimi algoritmi, kot je Zstandard.
- Stiskanje samo ene datoteke: zahteva združevanje s TAR (.tar.bz2) za pakiranje več datotek ali mape.
- Večja poraba CPE med razširjanjem v primerjavi z Gzipom ali Zstd.
Zanimive tehnične malenkosti
- Magična bajta 'BZh' pomenita 'Burrows-Wheeler Zip Huffman', sledi pa jima števka (od '1' do '9'), ki označuje velikost bloka v stotih kilobajtih (npr. 'BZh9' = 900 KB).
- Izvorna koda jedra Linuxa je bila več kot desetletje distribuirana izključno v formatu .tar.bz2, preden se je preselila na .xz.
- Burrows-Wheelerjeva transformacija ne stiska podatkov neposredno; preureja vrstni red znakov tako, da se enake črke združijo, zaradi česar jih je mogoče enostavno stisniti s Huffmanovim kodiranjem.
Pogosta tehnična vprašanja
Kakšna je razlika med .gz in .bz2?
.bz2 uporablja Burrows-Wheelerjevo transformacijo za doseganje manjše velikosti datotek kot .gz, vendar traja dlje časa za stiskanje in razširjanje.
Zakaj ima bzip2 ukaz 'bzip2recover'?
Ker bzip2 stiska podatke v neodvisnih 900 KB blokih, od katerih ima vsak svojo kontrolno vsoto CRC, lahko bzip2recover izvleče nepoškodovane bloke, tudi če je del datoteke poškodovan.
Kako lahko razširim datoteko .tar.bz2?
Datoteke .tar.bz2 lahko razširite neposredno v spletnem brskalniku sorazmeroma enostavno z uporabo File2File.app, ne da bi zaganjali orodja v ukazni vrstici.