Arhivă BZIP2 (.bz2)
Bzip2 StandardBzip2 (BZ2) este un utilitar clasic de compresie Unix fără brevete și un format de fișier creat de Julian Seward, care utilizează transformata Burrows-Wheeler pentru a obține o compresie semnificativ mai strânsă decât clasicul Gzip.
Inspectează și Metadate
Sistemele de operare și analizatoarele de fișiere identifică fișierele BZ2 prin inspectarea secvenței binare inițiale:
Semnătura antetului la nivel de octet (Magic Bytes)
Sistemele de operare și analizatoarele de fișiere identifică fișierele BZ2 prin inspectarea secvenței binare inițiale:
SEMNĂTURĂ HEX (OFFSET 0):
42 5A 68REPREZENTARE ASCII: BZh
Standardizare: Bzip2 Open Source Standard
Specificații tehnice
| Arhitectură container | Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC |
| Compresie | Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding |
| Endianitatea octeților | Big-Endian bitstream framing |
| Spații de culoare | N/A (Byte Compression Stream) |
| Canale și structură | Single-file compressed byte stream |
| Dimensiuni maxime | Unbounded stream length (supports arbitrary file sizes) |
| Transparență | 100% bit-exact lossless data preservation |
| Streaming și progresiv | Sequential block-by-block streaming with independent per-block CRC checksums |
Matrice de comparație tehnică: BZ2 vs Competitori
| Atribut tehnic | BZ2 (Curent) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Algoritm de bază | Transformata Burrows-Wheeler (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Finite State Entropy + LZ77 |
| Compresie vs Gzip | Cu 10% - 20% mai mic decât Gzip | Standard de bază | Cu 20% - 30% mai mic decât Gzip | Cu 10% - 20% mai mic decât Gzip |
| Viteză de decompresie | Lentă (~30-50 MB/s) | Rapidă (~300 MB/s) | Moderată (~100 MB/s) | Foarte rapidă (>1,5 GB/s) |
| Sume de control pe bloc | CRC pe 32 de biți per bloc | CRC32 pentru flux unic | CRC64 pentru flux | xxHash64 pentru flux |
Moduri comune de corupție și ghid de recuperare hexazecimală
Extragerea se oprește cu mesajul „bzip2: Data integrity error when decompressing".
Cauză principală: Bit inversat în blocul comprimat, cauzând eșecul validării CRC32 pentru matricea de permutare inversă BWT.
Recuperare: Utilizați utilitarul „bzip2recover" pentru a recupera blocurile nedamage din jurul sectorului corupt.
Analiză de securitate și vectori de atac asupra parserului
Implementările Bzip2 implică sortare complexă a fluxului de biți și analiză a tabelelor Huffman care au prezentat istoric erori de depășire de întregi (integer overflow).
Vectori de atac cunoscuți
- Depășire de întregi în alocarea matricei de sortare BWT (de exemplu, CVE-2016-3189).
- Scriere în afara limitelor în timpul asamblării tabelului de decodare Huffman.
- Refuz de serviciu prin modele de intrare patologice care cauzează timpi de sortare BWT pătratici în cel mai rău caz.
Cele mai bune practici de securitate:
Origini istorice și repere
Avantaje cheie și beneficii
- Depășește în mod constant clasicul Gzip cu 10% până la 20% pe arhivele de cod sursă tar, jurnalele de sistem și bazele de date text.
- Arhitectura de blocuri independente (100k până la 900k) include sume de control CRC pe 32 de biți per bloc pentru o verificare robustă a integrității.
- Disponibilitate nativă universală în toate distribuțiile Linux, BSD și macOS cu linie de comandă.
Limitări tehnice și dezavantaje
- Viteze de compresie și decompresie semnificativ mai lente în comparație cu algoritmii moderni precum Zstandard.
- Compresie doar pentru fișiere individuale: necesită asocierea cu TAR (.tar.bz2) pentru a împacheta mai multe fișiere sau directoare.
- Consum mai mare de CPU în timpul decompresiei decât Gzip sau Zstd.
Curiozități tehnice interesante
- Octeții magici „BZh" reprezintă „Burrows-Wheeler Zip Huffman", urmați de o cifră (de la „1" la „9") care indică dimensiunea blocului în sute de kiloocteți (de exemplu, „BZh9" = 900 KB).
- Codul sursă al nucleului Linux a fost distribuit exclusiv în format .tar.bz2 timp de peste un deceniu înainte de a migra la .xz.
- Transformata Burrows-Wheeler nu comprimă datele în mod direct; ea permutează ordinea caracterelor astfel încât literele identice să se grupeze, făcându-le ușor de comprimat prin codificare Huffman.
Întrebări tehnice frecvente
Care este diferența dintre .gz și .bz2?
.bz2 folosește transformarea Burrows-Wheeler pentru a obține dimensiuni de fișiere mai mici decât .gz, însă durează mai mult să comprime și să dezarhiveze.
De ce are bzip2 o comandă numită „bzip2recover”?
Deoarece bzip2 comprimă datele în blocuri independente de 900 KB, fiecare având propriul cod CRC, bzip2recover poate extrage blocurile nedeteriorate chiar și atunci când o parte a fișierului este coruptă.
Cum pot extrage un fișier .tar.bz2?
Puteți despacheta fișiere .tar.bz2 direct în browserul web cu File2File.app, fără a rula instrumente în linia de comandă.