BZIP2 arhiiv (.bz2)
Bzip2 StandardBzip2 (BZ2) on klassikaline patendivaba Unixi tihendusutiliit ja failivorming, mille lõi Julian Seward ja mis kasutab Burrows-Wheeleri teisendust, et saavutada oluliselt tihedam tihendus kui klassikalisel Gzipil.
Kontrolli ja metaandmed
Operatsioonisüsteemid ja failianalüsaatorid tuvastavad BZ2 faile, kontrollides algset binaarset baidijada:
Baidi-taseme päise allkiri (maagilised baidid)
Operatsioonisüsteemid ja failianalüsaatorid tuvastavad BZ2 faile, kontrollides algset binaarset baidijada:
HEX-ALLKIRI (NIHE 0):
42 5A 68ASCII-ESITUS: BZh
Standardiseerimine: Bzip2 Open Source Standard
Tehnilised andmed
| Konteineri arhitektuur | Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC |
| Tihendamine | Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding |
| Baitide järjekord (Endianness) | Big-Endian bitstream framing |
| Värviruumid | N/A (Byte Compression Stream) |
| Kanalid ja struktuur | Single-file compressed byte stream |
| Max mõõtmed | Unbounded stream length (supports arbitrary file sizes) |
| Läbipaistvus | 100% bit-exact lossless data preservation |
| Voogedastus ja progressiivsus | Sequential block-by-block streaming with independent per-block CRC checksums |
Tehniline võrdlusmaatriks: BZ2 vs konkurendid
| Tehniline atribuut | BZ2 (Praegune) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Põhialgoritm | Burrows-Wheeleri teisendus (BWT) | Tühjenda (LZ77 + Huffman) | LZMA / LZMA2 | Lõpliku oleku entroopia + LZ77 |
| Tihendus võrreldes Gzipiga | 10% - 20% väiksem kui Gzip | Võrdlusalus | 20% - 30% väiksem kui Gzip | 10% - 20% väiksem kui Gzip |
| Lahtipakkimise kiirus | Aeglane (~30-50 MB/s) | Kiire (~300 MB/s) | Mõõdukas (~100 MB/s) | Väga kiire (>1,5 GB/s) |
| Ploki kontrollsummad | Plokipõhine 32-bitine CRC | Ühe voo CRC32 | Voo CRC64 | Voo xxHash64 |
Levinud riknemisvead ja heksataaste juhend
Lahtipakkimine katkeb veateatega 'bzip2: Data integrity error when decompressing'.
Juurpõhjus: Ümberpööratud bitt tihendatud plokis, mis põhjustab BWT pöördpermutatsiooni maatriksi ebaõnnestumise CRC32 valideerimisel.
Taastamine: Kasutage utiliiti 'bzip2recover', et päästa kahjustatud sektori ümber olevad vigastamata plokid.
Turvaanalüüs ja parsimisründevektorid
Bzip2 implementatsioonid hõlmavad keerulist bitivoo sortimist ja Huffmani tabeli analüüsi, milles on ajalooliselt esinenud täisarvude ületäitumise vigu.
Teadaolevad ründavektorid
- Täisarvu ületäitumine BWT sortimise massiivi eraldamisel (nt CVE-2016-3189).
- Piiridest väljas kirjutamine Huffmani dekodeerimistabeli koostamise ajal.
- Teenusetõkestus (DoS) patoloogiliste sisendmustrite kaudu, mis põhjustavad halvima juhu ruutkujulisi BWT sortimisaegu.
Kaitsealased parimad tavad:
Ajalooline taust ja verstapostid
Peamised eelised
- Ületab järjepidevalt klassikalist Gzipi 10% kuni 20% võrra lähtekoodi tar-arhiivide, süsteemilogide ja tekstipõhiste andmebaaside puhul.
- Sõltumatu plokkarhitektuur (100k kuni 900k) sisaldab plokipõhiseid 32-bitiseid CRC-kontrollsummasid tugeva terviklikkuse kontrolli tagamiseks.
- Universaalne olemuslik saadavus kõigis Linuxi, BSD ja macOS käsurea distributsioonides.
Tehnilised piirangud ja puudused
- Märgatavalt aeglasemad tihendus- ja lahtipakkimiskiirused võrreldes kaasaegsete algoritmidega nagu Zstandard.
- Ainult ühele failile mõeldud tihendus: nõuab sidumist TAR-iga (.tar.bz2), et pakendada mitu faili või kataloogi.
- Suurem protsessorikasutus lahtipakkimisel võrreldes Gzipi või Zstd-ga.
Huvitavaid tehnilisi fakte
- Maagilised baidid 'BZh' tähistavad fraasi 'Burrows-Wheeler Zip Huffman', millele järgneb number ('1' kuni '9'), mis tähistab ploki suurust sadades kilobaididena (nt 'BZh9' = 900 KB).
- Linuxi tuuma lähtekoodi levitati üle kümne aasta eranditult vormingus .tar.bz2 enne versioonile .xz üleminekut.
- Burrows-Wheeleri teisendus ei tihenda andmeid otse; see permuteerib märkide järjekorda nii, et identsed tähed koonduvad kokku, muutes need Huffman-kodeeringu abil hõlpsasti tihendatavaks.
Korduma kippuvad tehnilised küsimused
Mis vahe on .gz- ja .bz2-failidel?
.bz2 kasutab Burrowsi-Wheeleri teisendust, et saavutada .gz-st väiksem failimaht, kuid selle tihendamine ja lahtipakkimine võtab rohkem aega.
Miks on bzip2-l käsk "bzip2recover"?
Kuna bzip2 pakib andmeid sõltumatutesse 900 KB suurustesse plokkidesse, millest igaühel on oma CRC, suudab bzip2recover eraldada kahjustamata plokid isegi siis, kui osa failist on rikutud.
Kuidas ma saan .tar.bz2-faili lahti pakkida?
Saate .tar.bz2-failid otse oma veebibrauseris lahti pakkida rakenduse File2File.app abil, ilma et peaksite käsureatööriistu käivitama.