BZIP2-arkiv (.bz2)
Bzip2 StandardBzip2 (BZ2) är ett klassiskt, patentfritt komprimeringsverktyg och filformat för Unix, skapat av Julian Seward. Det använder Burrows-Wheeler-transformen för att uppnå avsevärt effektivare komprimering än klassiska Gzip.
Granska & Metadata
Operativsystem och filanalysverktyg identifierar BZ2-filer genom att granska den inledande binära bytesekvensen:
Signatur för filhuvud på bytenivå (Magic Bytes)
Operativsystem och filanalysverktyg identifierar BZ2-filer genom att granska den inledande binära bytesekvensen:
HEX-SIGNATUR (OFFSET 0):
42 5A 68ASCII-REPRESENTATION: BZh
Standardisering: Bzip2 Open Source Standard
Tekniska 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 |
| Bytessordinning | Big-Endian bitstream framing |
| Färgrymder | N/A (Byte Compression Stream) |
| Kanaler och struktur | Single-file compressed byte stream |
| Maximala dimensioner | Unbounded stream length (supports arbitrary file sizes) |
| Transparens | 100% bit-exact lossless data preservation |
| Strömning och progressiv | Sequential block-by-block streaming with independent per-block CRC checksums |
Teknisk jämförelsematris: BZ2 vs konkurrenter
| Tekniskt attribut | BZ2 (Aktuell) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Kärnalgoritm | Burrows-Wheeler-transformering (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Finite State Entropy + LZ77 |
| Komprimering vs Gzip | 10 % - 20 % mindre än Gzip | Baslinjestandar | 20 % - 30 % mindre än Gzip | 10 % - 20 % mindre än Gzip |
| Dekomprimeringshastighet | Långsam (~30-50 MB/s) | Snabb (~300 MB/s) | Måttlig (~100 MB/s) | Blixtrande (>1,5 GB/s) |
| Blockkontrollsummor | 32-bitars CRC per block | Enkel ströms-CRC32 | Ströms-CRC64 | Ströms-xxHash64 |
Vanliga skadeorsaker och hex-återställningsguide
Extraktionen avbryts med 'bzip2: Data integrity error when decompressing'.
Grundorsak: Vänd bit i komprimerat block som gör att BWT:s inversa permutationsmatris misslyckas med CRC32-valideringen.
Återställning: Använd verktyget 'bzip2recover' för att rädda oskadade block som omger den skadade sektorn.
Säkerhetsanalys och attackvektorer för tolkar
Bzip2-implementeringar innefattar komplex bitströmssortering och parsning av Huffmancstabeller som historiskt sett har drabbats av heltalsspillsbrister.
Kända attackvektorer
- Heltalsspill vid allokering av BWT-sorteringsmatris (t.ex. CVE-2016-3189).
- Skrivning utanför gränserna vid sammansättning av Huffmandekoderingsstabeller.
- Överbelastningsattack genom patologiska indatamönster som orsakar värsta fall av kvadratiska BWT-sorteringstider.
Rekommenderade skyddsåtgärder:
Historiskt ursprung och milstolpar
Viktiga fördelar
- Överträffar konsekvent klassiska Gzip med 10 % till 20 % på källkodstollar, systemloggar och textdatabaser.
- Oberoende blockarkitektur (100k till 900k) inkluderar 32-bitars CRC-kontrollsummor per block för robust integritetskontroll.
- Universell, inbyggd tillgänglighet i alla Linux-, BSD- och macOS-kommandoradsdistributioner.
Tekniska begränsningar
- Betydligt långsammare komprimerings- och dekomprimeringshastigheter jämfört med moderna algoritmer som Zstandard.
- Endast enfilskomprimering: kräver sammanslagning med TAR (.tar.bz2) för att paketera flera filer eller kataloger.
- Hög CPU-användning vid dekomprimering jämfört med Gzip eller Zstd.
Intressant teknisk kuriosa
- Magiska byten 'BZh' står för 'Burrows-Wheeler Zip Huffman', följt av en siffra ('1' till '9') som anger storleken på blocket i hundratals kilobyte (t.ex. 'BZh9' = 900 KB).
- Linux-kärnans källkod distribuerades uteslutande i .tar.bz2-format i över ett decennium innan den migrerades till .xz.
- Burrows-Wheeler-transformen komprimerar inte data direkt; den permuterar ordningen på tecken så att identiska bokstäver klumpas ihop, vilket gör dem mycket enkla att komprimera med Huffman-kodning.
Vanliga tekniska frågor
Vad är skillnaden mellan .gz och .bz2?
.bz2 använder Burrows-Wheeler-transformen för att uppnå mindre filstorlekar än .gz, men det tar längre tid att komprimera och dekomprimera.
Varför har bzip2 ett 'bzip2recover'-kommando?
Eftersom bzip2 komprimerar data i oberoende block på 900 KB, var och en med sin egen CRC, kan bzip2recover extrahera oskadade block även om en del av filen är skadad.
Hur kan jag extrahera en .tar.bz2-fil?
Du kan packa upp .tar.bz2-filer direkt i din webbläsare med File2File.app utan att köra kommandoradsverktyg.