BZIP2 archívum (.bz2)

Bzip2 Szabvány

A Bzip2 (BZ2) egy klasszikus, szabadalmaktól mentes Unix tömörítő segédprogram és fájlformátum, amelyet Julian Seward hozott létre. A Burrows-Wheeler transzformációt alkalmazza, amellyel jelentősen jobb tömörítési arányt ér el a klasszikus Gzipnél.

Vizsgálat és metaadatok

Az operációs rendszerek és a fájlelemzők a kezdő bináris bájtsorozat vizsgálatával azonosítják a(z) BZ2 fájlokat:

Válasszon ki vagy húzzon ide fájlokat

Privát - a fájlok soha nem hagyják el az eszközét

vagy beillesztés Ctrl+V
Adatvédelmi garancia hálózati adatátvitel nélkül: 0 bájt került fel külső szerverekre. Minden feldolgozás helyben, a böngésző elkülönített környezetében történt.

Bájtszintű fejlécaláírás (fájlazonosító bájtok)

Az operációs rendszerek és a fájlelemzők a kezdő bináris bájtsorozat vizsgálatával azonosítják a(z) BZ2 fájlokat:

HEX ALÁÍRÁS (ELTOLÁS 0):

42 5A 68

ASCII ÁBRÁZOLÁS: BZh

Szabványosítás: Bzip2 Open Source Standard

Műszaki specifikációk

Konténer architektúraAdatfolyamfejléc („BZh” + az 1-9 közötti blokkméretet jelző számjegy), majd tömörített adatblokkok és 32 bites CRC következik
TömörítésBurrows-Wheeler-transzformáció (BWT), Move-to-Front-transzformáció (MTF) és Huffman-kódolás
Bájtsorrendnagy bájtsorrendű bitfolyam-keretezés
SzínterekNem alkalmazható (bájttömörítési adatfolyam)
Csatornák és struktúraEgyfájlos, tömörített bájtfolyam
Max. méretekKorlátlan adatfolyam-hossz (tetszőleges fájlméretet támogat)
ÁtlátszóságVeszteségmentes adatmegőrzés, 100%-ban bitpontos visszaállítással
Streaming és progresszívSzekvenciális, blokkonkénti adatfolyam-feldolgozás, blokkonként külön CRC-ellenőrzőösszeggel

Műszaki összehasonlító mátrix: BZ2 vs. versenytársak

Technikai attribútumBZ2 (Jelenlegi)GZXZZSTD
Alapvető algoritmusBurrows-Wheeler transzformáció (BWT)Deflate (LZ77 + Huffman)LZMA / LZMA2Véges állapotú entrópia + LZ77
Tömörítés a Gziphez képest10 - 20%-kal kisebb fájlméret, mint a Gzip eseténAlapszintű szabvány20 - 30%-kal kisebb fájlméret, mint a Gzip esetén10 - 20%-kal kisebb fájlméret, mint a Gzip esetén
Kitömörítési sebességLassú (~30 - 50 MB/s)Gyors (~300 MB/s)Mérsékelt (~100 MB/s)Villámgyors (>1,5 GB/s)
Blokk-ellenőrzőösszegekBlokkonkénti 32 bites CRCEgyetlen CRC32 az adatfolyamhozAdatfolyam CRC64Adatfolyam xxHash64

Gyakori sérülési módok és hexadecimális helyreállítási útmutató

A kitömörítés megszakad a „bzip2: Data integrity error when decompressing" hibaüzenettel.

Kiváltó ok: Egy bit megváltozik a tömörített blokkban, ezért a BWT inverz permutációs mátrixának CRC32-ellenőrzése sikertelen lesz.

Helyreállítás: Használja a „bzip2recover" segédprogramot a sérült szektort körülvevő sértetlen blokkok mentéséhez.

Biztonsági elemzés és elemző (parser) támadási vektorok

A Bzip2-megvalósítások összetett bitfolyam-rendezést és Huffman-tábla-elemzést végeznek; ezekben korábban egészszám-túlcsordulási hibák fordultak elő.

Ismert támadási vektorok

  • Egészszám-túlcsordulás a BWT rendezőtömbjének lefoglalásakor (pl. CVE-2016-3189).
  • Határon túli írás a Huffman-dekódolótábla összeállításakor.
  • Szolgáltatásmegtagadás (DoS) olyan szélsőséges bemeneti minták révén, amelyek a legrosszabb esetben négyzetes idejű BWT-rendezést okoznak.

Ajánlott védekezési módszerek: A BZ2-fájlokat memóriabiztos WASM-dekóderekkel dekódolja, amelyek korlátozzák a memóriahasználatot.

Történeti háttér és mérföldkövek

2019Federico Mena Quintero korszerűsíti a bzip2 kódbázisának karbantartását a bzip3 és a modern nyílt forráskódú kezdeményezések keretében.
2000Megjelenik az 1.0-s verzió, amely stabilizálja a bzip2 formátumot a Linux-disztribúciókban és csomagkezelőkben.
1996Julian Seward kiadja a bzip2 0.15-ös verzióját a korábbi, szabadalmi aggályokkal küzdő bzip formátum felváltására.

Főbb előnyök

  • Forráskód-archívumok, rendszernaplók és szöveges adatbázisok esetén következetesen 10-20%-kal felülmúlja a klasszikus Gzipet.
  • A független blokkarchitektúra (100k és 900k között) blokkonkénti 32 bites CRC-ellenőrzőösszegeket tartalmaz a robusztus integritásellenőrzés érdekében.
  • Sok Linux-, BSD- és macOS-disztribúcióban natívan elérhető; a csomagolás disztribúciónként eltér.

Technikai korlátok és hátrányok

  • Jelentősen lassabb tömörítési és kitömörítési sebesség a modern algoritmusokhoz, például a Zstandardhoz képest.
  • Csak egyfájlos tömörítés: több fájl vagy könyvtár csomagolásához TAR (.tar.bz2) formátummal kell párosítani.
  • Nagyobb CPU-használat a kitömörítés során a Gziphez vagy a Zstdhez képest.

Érdekes technikai tudnivalók

  • A „BZh” fájlazonosító bájtok a „Burrows-Wheeler Zip Huffman” kifejezésre utalnak. Ezeket egy számjegy követi ('1'-től '9'-ig), amely a blokkméretet százezer bájtos egységekben adja meg (pl. 'BZh9' = 900 KB).
  • A Linux kernel forráskódját több mint egy évtizedig kizárólag .tar.bz2 formátumban terjesztették, mielőtt áttértek volna a .xz formátumra.
  • A Burrows-Wheeler transzformáció nem közvetlenül tömöríti az adatokat; megváltoztatja a karakterek sorrendjét úgy, hogy az azonos betűk egymás mellé kerüljenek.

Gyakran Ismételt Műszaki Kérdések

Mi a különbség a .gz és a .bz2 között?

A .bz2 a Burrows-Wheeler transzformációt használja a .gz-nél kisebb fájlméret eléréséhez, de a tömörítése és kitömörítése több időt vesz igénybe.

Miért van a bzip2-nek „bzip2recover” parancsa?

Mivel a bzip2 független, 900 KB-os blokkokban - mindegyik saját CRC-vel ellátva - tömöríti az adatokat, a bzip2recover képes kinyerni a sértetlen blokkokat még akkor is, ha a fájl egy része megsérült.

Hogyan bontsak ki egy .tar.bz2-fájlt?

A .tar.bz2 fájlokat közvetlenül a webböngészőjében csomagolhatja ki a File2File.app segítségével, parancssori eszközök futtatása nélkül.