BZIP2-arkiv (.bz2)
Bzip2 StandardBzip2 (BZ2) er et klassisk patentfrit Unix-komprimeringsværktøj og filformat skabt af Julian Seward, som benytter Burrows-Wheeler-transformationen til at opnå en væsentligt strammere komprimering end klassisk Gzip.
Undersøg & Metadata
Operativsystemer og filanalysatorer identificerer BZ2-filer ved at inspicere den indledende binære bytesekvens:
Byte-niveau Header-signatur (Magic Bytes)
Operativsystemer og filanalysatorer identificerer BZ2-filer ved at inspicere den indledende binære bytesekvens:
HEX-SIGNATUR (OFFSET 0):
42 5A 68ASCII-REPRÆSENTATION: BZh
Standardisering: Bzip2 Open Source Standard
Tekniske specifikationer
| Containerarkitektur | 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 |
| Bytterejsning | Big-Endian bitstream framing |
| Farverum | N/A (Byte Compression Stream) |
| Kanaler og struktur | Single-file compressed byte stream |
| Maks. dimensioner | Unbounded stream length (supports arbitrary file sizes) |
| Gennemsigtighed | 100% bit-exact lossless data preservation |
| Streaming og progressiv | Sequential block-by-block streaming with independent per-block CRC checksums |
Tekniske sammenligningsmatrix: BZ2 vs. konkurrenter
| Teknisk attribut | BZ2 (Aktuel) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Kernealgoritme | Burrows-Wheeler-transformation (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Finite State Entropy + LZ77 |
| Komprimering vs Gzip | 10 % - 20 % mindre end Gzip | Grundlæggende standard | 20 % - 30 % mindre end Gzip | 10 % - 20 % mindre end Gzip |
| Dekomprimeringshastighed | Langsom (~30-50 MB/s) | Hurtig (~300 MB/s) | Moderat (~100 MB/s) | Lynhurtig (>1.5 GB/s) |
| Blok-tjeksummer | 32-bit CRC pr. blok | Enkeltstrøms CRC32 | Strøms CRC64 | Strøms xxHash64 |
Almindelige korruptionstilstande og hex-gendannelsesvejledning
Udpakning afbrydes med 'bzip2: Data integrity error when decompressing'.
Grundlæggende årsag: Omvendt bit i komprimeret blok, der gør, at BWT's inverse permutationsmatrix fejler CRC32-validering.
Gendannelse: Brug 'bzip2recover'-værktøjet til at bjerge ubeskadigede blokke omkring den beskadigede sektor.
Sikkerhedsanalyse og parser-angrebsvektorer
Bzip2-implementeringer involverer kompleks bitstrømsortering og Huffman-tabelanalyse, som historisk set har haft heltalsoverløbsfejl.
Kendte angrebsvektorer
- Heltalsoverløb i allokering af BWT-sorteringsarray (f.eks. CVE-2016-3189).
- Udenfor-grænserne-skrivning under samling af Huffman-afkodningstabel.
- Nægtelse af tjeneste (DoS) gennem patologiske inputmønstre, der forårsager værst-tænkelige kvadratiske BWT-sorteringstider.
Defensive bedste praksisser:
Historisk oprindelse og milepæle
Vigtige fordele og styrker
- Overgår konsekvent klassisk Gzip med 10 % til 20 % på kildekodetarballs, systemlogfiler og tekstdatabaser.
- Uafhængig blokarkitektur (100k til 900k) indeholder 32-bit CRC-tjeksummer pr. blok for robust integritetskontrol.
- Universel indbygget tilgængelighed på tværs af alle Linux-, BSD- og macOS-kommandolinjedistributioner.
Tekniske begrænsninger og ulemper
- Betydeligt langsommere komprimerings- og dekomprimeringshastigheder sammenlignet med moderne algoritmer som Zstandard.
- Kun enkeltfilskomprimering: kræver parring med TAR (.tar.bz2) for at pakke flere filer eller mapper.
- Højere CPU-forbrug under dekomprimering end Gzip eller Zstd.
Interessant teknisk trivia
- De 'BZh'-magiske bytes står for 'Burrows-Wheeler Zip Huffman', efterfulgt af et ciffer ('1' til '9'), der angiver blokstørrelsen i hundreder af kilobyte (f.eks. 'BZh9' = 900 KB).
- Linux-kernens kildekode blev distribueret udelukkende i .tar.bz2-formatet i over et årti, før den migrerede til .xz.
- Burrows-Wheeler-transformationen komprimerer ikke data direkte; den permuterer rækkefølgen af tegn, så identiske bogstaver klumper sig sammen, hvilket gør dem nemt komprimerbare via Huffman-kodning.
Ofte stillede tekniske spørgsmål
Hvad er forskellen mellem .gz og .bz2?
.bz2 bruger Burrows-Wheeler-transformationen til at opnå mindre filstørrelser end .gz, men det tager længere tid at komprimere og dekomprimere.
Hvorfor har bzip2 en 'bzip2recover'-kommando?
Da bzip2 komprimerer data i uafhængige blokke på 900 KB, hver med sin egen CRC, kan bzip2recover udpakke ubeskadigede blokke, selv hvis en del af filen er korrupt.
Hvordan kan jeg udpakke en .tar.bz2-fil?
Du kan udpakke .tar.bz2-filer direkte i din netbrowser med File2File.app uden at køre kommandolinjeværktøjer.