BZIP2 arhīvs (.bz2)
Bzip2 StandartsBzip2 (BZ2) ir klasiska, no patentiem brīva Unix saspiešanas utilīta un failu formāts, ko izveidojis Džulians Sevards (Julian Seward) un kas izmanto Burrows-Wheeler transformāciju, lai panāktu ievērojami blīvāku saspiešanu nekā klasiskais Gzip.
Pārbaudīt un metadati
Operētājsistēmas un failu analizatori identificē BZ2 failus, pārbaudot sākotnējo bināro baitu secību:
Baitu līmeņa galvenes paraksts (maģiskie baiti)
Operētājsistēmas un failu analizatori identificē BZ2 failus, pārbaudot sākotnējo bināro baitu secību:
HEKSADECIMĀLAIS PARAKSTS (NOBĪDE 0):
42 5A 68ASCII ATTEIOLOJUMS: BZh
Standartizācija: Bzip2 Open Source Standard
Tehniskās specifikācijas
| Konteinera arhitektūra | Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC |
| Saspiešana | Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding |
| Baitu secība | Big-Endian bitstream framing |
| Krāsu telpas | N/A (Byte Compression Stream) |
| Kanāli un struktūra | Single-file compressed byte stream |
| Maks. izmēri | Unbounded stream length (supports arbitrary file sizes) |
| Caurspīdīgums | 100% bit-exact lossless data preservation |
| Straumēšana un progresīvā ielāde | Sequential block-by-block streaming with independent per-block CRC checksums |
Tehniskā salīdzinājuma matrica: BZ2 pret konkurentiem
| Tehniskais atribūts | BZ2 (Pašreizējais) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Galvenais algoritms | Burrows-Wheeler transformācija (BWT) | Deflate (LZ77 + Hofmanis) | LZMA / LZMA2 | Galīgo stāvokļu entropija + LZ77 |
| Saspiešana salīdzinājumā ar Gzip | Par 10% - 20% mazāks nekā Gzip | Bāzes standarts | Par 20% - 30% mazāks nekā Gzip | Par 10% - 20% mazāks nekā Gzip |
| Atkausēšanas ātrums | Lēns (~30-50 MB/s) | Ātrs (~300 MB/s) | Mērens (~100 MB/s) | Ļoti ātrs (>1,5 GB/s) |
| Bloku kontroles summas | 32 bitu CRC katram blokam | Vienas straumes CRC32 | Straumes CRC64 | Straumes xxHash64 |
Biežākie bojājumu veidi un heksadecimālās atkopšanas ceļvedis
Izvilkšana tiek pārtraukta ar paziņojumu 'bzip2: Data integrity error when decompressing'.
Pamatcēlonis: Apgriezts bits saspiestajā blokā, kura dēļ BWT inversās permutācijas matrica neiztur CRC32 validāciju.
Atkopšana: Izmantojiet 'bzip2recover' utilītu, lai glābtu veselos blokus ap bojāto sektoru.
Drošības analīze un parsētāja uzbrukuma vektori
Bzip2 implementācijas ietver sarežģītu bitu straumju kārtošanu un Hofmaņa tabulu parsēšanu, kurās agrāk ir konstatētas veselu skaitļu pārpildes kļūdas.
Zināmie uzbrukuma vektori
- Veselu skaitļu pārpilde BWT kārtošanas masīva piešķiršanā (piem., CVE-2016-3189).
- Ārpus robežu rakstīšana Hofmaņa dekodēšanas tabulas montāžas laikā.
- Pakalpojuma atteice, izmantojot patoloģiskus ievades modeļus, kas izraisa sliktākā gadījumā kvadrātiskus BWT kārtošanas laikus.
Aizsardzības labākā prakse:
Vēsturiskā izcelsme un pavērsieni
Galvenās priekšrocības un plusi
- Konsekventi pārspēj klasisko Gzip par 10% līdz 20% pirmkoda tarball failos, sistēmas žurnālos un teksta datubāzēs.
- Neatkarīga bloku arhitektūra (100k līdz 900k) ietver katra bloka 32 bitu CRC kontroles summas drošai integritātes pārbaudei.
- Universāla vietējā pieejamība visos Linux, BSD un macOS komandrindas izplatījumos.
Tehniskie ierobežojumi un mīnusi
- Ievērojami lēnāks saspiešanas un atkausēšanas ātrums salīdzinājumā ar tādiem mūsdienu algoritmiem kā Zstandard.
- Tikai viena faila saspiešana: lai iepakotu vairākus failus vai direktorijus, nepieciešams apvienojums ar TAR (.tar.bz2).
- Lielāks procesora noslodze atkausēšanas laikā nekā Gzip vai Zstd.
Interesanti tehniski fakti
- Maģiskie baiti 'BZh' apzīmē 'Burrows-Wheeler Zip Huffman', kam seko cipars (no '1' līdz '9'), kas norāda bloka izmēru simtos kilobaitu (piem., 'BZh9' = 900 KB).
- Linux kodola pirmkods vairāk nekā desmitgadi tika izplatīts tikai .tar.bz2 formātā, pirms tas pārgāja uz .xz.
- Burrows-Wheeler transformācija nesaspiež datus tieši; tā pārkārto rakstzīmju secību tā, lai identiski burti saplūstu kopā, padarot tos viegli saspiežamus ar Hofmaņa kodēšanu.
Bieži uzdotie tehniskie jautājumi
Kāda ir atšķirība starp .gz un .bz2?
.bz2 izmanto Burrows-Wheeler transformāciju, lai iegūtu mazākus failu izmērus nekā .gz, taču tā saspiešana un atspiešana prasa vairāk laika.
Kāpēc bzip2 ir komanda 'bzip2recover'?
Tā kā bzip2 saspiež datus neatkarīgos 900 KB blokos, katram ar savu CRC, bzip2recover var izvilkt nebojātus blokus pat tad, ja daļa faila ir bojāta.
Kā es varu atpakot .tar.bz2 failu?
Jūs varat atpakot .tar.bz2 failus tieši savā tīmekļa pārlūkprogrammā ar File2File.app, neizmantojot komandrindas rīkus.