BZIP2-arkiv (.bz2)
Bzip2 StandardBzip2 (BZ2) er eit klassisk, patentfritt Unix-komprimeringsverktøy og filformat som vart skapt av Julian Seward. Det nyttar Burrows-Wheeler-transformatet for å oppnå merkbart tettare kompresjon enn klassisk Gzip.
Undersøk og metadata
Operativsystemer og filanalysatorer identifiserer BZ2-filer ved å undersøke den innledende binære bytesekvensen:
Byte-nivå hodesignatur (Magic Bytes)
Operativsystemer og filanalysatorer identifiserer BZ2-filer ved å undersøke den innledende binære bytesekvensen:
HEX-SIGNATUR (OFFSET 0):
42 5A 68ASCII-REPRESENTASJON: BZh
Standardisering: Bzip2 Open Source Standard
Tekniske spesifikasjoner
| Beholderarkitektur | Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC |
| Komprimering | Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding |
| Bytterekkefølge | Big-Endian bitstream framing |
| Fargerom | N/A (Byte Compression Stream) |
| Kanaler og struktur | Single-file compressed byte stream |
| Maks. dimensjoner | Unbounded stream length (supports arbitrary file sizes) |
| Gjennomsiktighet | 100% bit-exact lossless data preservation |
| Strømming og progressiv | Sequential block-by-block streaming with independent per-block CRC checksums |
Teknisk sammenligningsmatrise: BZ2 vs konkurrenter
| Teknisk attributt | BZ2 (Gjeldende) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Kjernealgoritme | Burrows-Wheeler-transformat (BWT) | Tømme (LZ77 + Huffman) | LZMA / LZMA2 | Endelig tilstandsentsropi + LZ77 |
| Kompresjon vs Gzip | 10 % - 20 % mindre enn Gzip | Basisstandard | 20 % - 30 % mindre enn Gzip | 10 % - 20 % mindre enn Gzip |
| Dekomprimeringsfart | Treg (~30-50 MB/s) | Rask (~300 MB/s) | Moderat (~100 MB/s) | Lynrask (>1,5 GB/s) |
| Blokksjekksummar | 32-bits CRC per blokk | Enkeltsveims CRC32 | Sveims CRC64 | Sveims xxHash64 |
Vanlige korrupsjonsmoduser og heksadesimal gjenopprettingsveiledning
Utrekkinga avbryt med 'bzip2: Data integrity error when decompressing'.
Underliggende årsak: Vendt bit i komprimert blokk som gjer at den inverse permutasjonsmatrisa til BWT mislykkast med CRC32-validering.
Utbedring: Bruk verktøyet 'bzip2recover' for å berge uskadde blokker rundt den korrupte sektoren.
Sikkerhetsanalyse og parser-angrepsvektorer
Bzip2-implementeringar involverer kompleks bitstrømsortering og Huffman-tabelltolking som historisk sett har opplevd heiltalsoverflytingsfeil.
Kjente angrepsvektorer
- Heiltalsoverflyting i allokeringa av BWT-sorteringsmatrisa (t.eks. CVE-2016-3189).
- Utsyn-utanfor-grenser-skriving under samansetting av Huffman-dekodingstabell.
- Tenestenekt (DoS) gjennom patologiske inndatamønstre som forårsakar verstefalls kvadratiske BWT-sorteringstider.
Beste praksis for forsvar:
Historisk opprinnelse og milepæler
Viktige fordeler
- Utpregar seg konsekvent med 10 % til 20 % betre resultat enn klassisk Gzip på kjeldekodetarballar, systemloggar og tekstdatabasar.
- Uavhengig blokkarkitektur (100k til 900k) inkluderer 32-bits CRC-sjekksum per blokk for robust integritetskontroll.
- Universell og innebygd tilgjengeleghet på tvers av alle kommandolinjedistribusjonar for Linux, BSD og macOS.
Tekniske begrensninger og ulemper
- Merkbart tregare komprimerings- og dekomprimeringsfart samanlikna med moderne algoritmar som Zstandard.
- Berre kompresjon av einskildfiler: krev paring med TAR (.tar.bz2) for å pakke fleire filer eller mapper.
- Høgare CPU-bruk under dekompresjon enn Gzip eller Zstd.
Interessante tekniske fakta
- Dei magiske bytarane «BZh» står for «Burrows-Wheeler Zip Huffman», etterfulgt av eitt siffer («1» til «9») som angjev blokkstorleiken i hundrevis av kilobyte (t.eks. «BZh9» = 900 KB).
- Kjeldekoden til Linux-kjernen vart distribuert eksklusivt i .tar.bz2-format i over eit decennium før han migrerte til .xz.
- Burrows-Wheeler-transformatet komprimerer ikkje data direkte; det permuterer rekkjefølgja på teikn slik at identiske bokstøver hopar seg saman, noko som gjer dei enkelt komprimerbare med Huffman-kodning.
Ofte stilte tekniske spørsmål
Hva er forskjellen mellom .gz og .bz2?
.bz2 bruker Burrows-Wheeler-transformasjonen for å oppnå mindre filstørrelser enn .gz, men det tar lengre tid å komprimere og dekomprimere.
Hvorfor har bzip2 en «bzip2recover»-kommando?
Fordi bzip2 komprimerer data i uavhengige blokker på 900 KB, hver med sin egen CRC, kan bzip2recover hente ut uskadede blokker selv om deler av filen er korrupte.
Hvordan kan jeg pakke ut en .tar.bz2-fil?
Du kan pakke ut .tar.bz2-filer direkte i nettleseren din med File2File.app uten å kjøre kommandolinjeverktøy.