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 bedre komprimering end klassisk Gzip.
Undersøgelse og 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 | Strømheader ('BZh' + blokstørrelsesciffer fra 1 til 9) efterfulgt af komprimerede datablokke og 32-bit CRC |
| Komprimering | Burrows-Wheeler-transformering (BWT), Move-to-Front-transformering (MTF) og Huffman-kodning |
| Byte-rækkefølge | Big-Endian-bitstrømstruktur |
| Farverum | Ikke relevant (komprimeret bytestrøm) |
| Kanaler og struktur | Komprimeret bytestrøm fra én fil |
| Maks. dimensioner | Ubegrænset strømlængde (understøtter vilkårlige filstørrelser) |
| Gennemsigtighed | 100 % bitnøjagtig tabsfri databevaring |
| Streaming og progressiv | Sekventiel streaming blok for blok med uafhængige CRC-kontrolsummer for hver blok |
Teknisk sammenligningsmatrix: BZ2 sammenlignet med konkurrenterne
| Teknisk attribut | BZ2 (Aktuel) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Kernealgoritme | Burrows-Wheeler-transformation (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Finite State Entropy + LZ77 |
| Komprimering sammenlignet med Gzip | 10 % til 20 % mindre end med Gzip | Grundlæggende standard | 20 % til 30 % mindre end med Gzip | 10 % til 20 % mindre end med Gzip |
| Dekomprimeringshastighed | Langsom (ca. 30-50 MB/s) | Hurtig (~300 MB/s) | Moderat (ca. 100 MB/s) | Lynhurtig (>1.5 GB/s) |
| Blokkontrolsummer | 32-bit CRC-kontrolsum 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: En bit i en komprimeret blok er vendt, så BWT's inverse permutationsmatrix ikke består CRC32-kontrollen.
Gendannelse: Brug værktøjet 'bzip2recover' til at redde ubeskadigede blokke omkring den beskadigede del.
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).
- Skrivning uden for grænserne under samling af Huffman-afkodningstabel.
- Nægtelse af tjeneste gennem patologiske inputmønstre, der medfører kvadratisk BWT-sorteringstid i værste fald.
Defensive bedste praksisser: Dekod BZ2-filer ved hjælp af hukommelsessikre WASM-dekodere med håndhævede hukommelsesgrænser.
Historisk oprindelse og milepæle
Vigtige fordele og styrker
- Overgår konsekvent klassisk Gzip med 10 % til 20 % på tar-arkiver med kildekode, systemlogfiler og tekstdatabaser.
- Uafhængig blokarkitektur (100k til 900k) indeholder 32-bit CRC-kontrolsummer pr. blok for robust integritetskontrol.
- Findes indbygget i mange Linux-, BSD- og macOS-distributioner; det varierer, om det er inkluderet.
Tekniske begrænsninger og ulemper
- Betydeligt langsommere komprimerings- og dekomprimeringshastigheder sammenlignet med moderne algoritmer som Zstandard.
- Kun enkeltfilskomprimering: kræver, at det kombineres med TAR (.tar.bz2) for at pakke flere filer eller mapper.
- Højere CPU-forbrug under dekomprimering end Gzip eller Zstd.
Interessante tekniske fakta
- 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.
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 beskadiget.
Hvordan kan jeg udpakke en .tar.bz2-fil?
Du kan udpakke .tar.bz2-filer direkte i browseren med File2File.app uden at bruge kommandolinjeværktøjer.