BZIP2-arkiv (.bz2)
Bzip2-standard 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 och metadata
Operativsystem och filanalysverktyg identifierar BZ2-filer genom att granska den inledande sekvensen av binära byte:
Signatur i filhuvudet på bytenivå (magiska byte)
Operativsystem och filanalysverktyg identifierar BZ2-filer genom att granska den inledande sekvensen av binära byte:
HEX-SIGNATUR (OFFSET 0):
42 5A 68ASCII-REPRESENTATION: BZh
Standardisering: Bzip2-standard med öppen källkod
Tekniska specifikationer
| Containerarkitektur | Strömhuvud ('BZh' + siffra 1-9 för blockstorlek), följt av komprimerade datablock och en 32-bitars CRC |
| Komprimering | Burrows-Wheeler-transformen (BWT), Move-to-Front-transformen (MTF) och Huffmankodning |
| Byteordning | Big-endian-bitströmsinramning |
| Färgrymder | Inte tillämpligt (bytekomprimeringsström) |
| Kanaler och struktur | Komprimerad byteström för en enda fil |
| Maximala dimensioner | Obegränsad strömlängd (stöder filer av godtycklig storlek) |
| Transparens | 100 % bitexakt, förlustfri databevaring |
| Strömning och progressiv visning | Sekventiell strömning block för block med oberoende CRC-kontrollsummor för varje block |
Teknisk jämförelsematris: BZ2 jämfört med konkurrenter
| Tekniskt attribut | BZ2 (Aktuell) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Kärnalgoritm | Burrows-Wheeler-transformering (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Finite State Entropy + LZ77 |
| Komprimering jämfört med Gzip | 10-20 % mindre än med Gzip | Baslinjestandard | 20-30 % mindre än med Gzip | 10-20 % mindre än med Gzip |
| Dekomprimeringshastighet | Långsam (~30-50 MB/s) | Snabb (~300 MB/s) | Måttlig (~100 MB/s) | Mycket snabb (>1,5 GB/s) |
| Blockkontrollsummor | 32-bitars CRC per block | CRC32 för en enda ström | Ströms-CRC64 | Ströms-xxHash64 |
Vanliga skadeorsaker och hex-återställningsguide
Extraktionen avbryts med 'bzip2: Data integrity error when decompressing'.
Grundorsak: Bit som slagits om 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-implementationer innefattar komplex sortering av bitströmmar och tolkning av Huffmantabeller, där det historiskt har förekommit fel med heltalsspill.
Kända attackvektorer
- Heltalsspill vid allokering av BWT-sorteringsmatris (t.ex. CVE-2016-3189).
- Skrivning utanför gränserna vid sammansättning av Huffmandekoderingsstabeller.
- Tjänsteavbrott genom patologiska indatamönster som orsakar kvadratisk sorteringstid i värsta fall för BWT.
Rekommenderade skyddsåtgärder: Avkoda BZ2-filer med minnessäkra WASM-avkodare som tillämpar minnesgränser.
Historiskt ursprung och milstolpar
Viktiga fördelar
- Överträffar konsekvent klassiska Gzip med 10 % till 20 % på källkodspaket, systemloggar och textdatabaser.
- Oberoende blockarkitektur (100k till 900k) inkluderar 32-bitars CRC-kontrollsummor per block för robust integritetskontroll.
- Finns inbyggt i många Linux-, BSD- och macOS-distributioner; inkluderingen varierar mellan distributioner.
Tekniska begränsningar
- Betydligt långsammare komprimerings- och dekomprimeringshastigheter jämfört med moderna algoritmer som Zstandard.
- Endast enfilskomprimering: kräver att det kombineras 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
- De 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.
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.