BZIP2 arhiva (.bz2)

Otvoreni Standard

Bzip2 (BZ2) je klasični Unix uslužni program i format datoteke za kompresiju bez gubitaka koji ne podleže patentima, a kreirao ga je Julian Seward. On koristi Burrows-Wheelerovu transformaciju da postigne znatno veću kompresiju od klasičnog Gzip-a.

Pregled i metapodaci

Operativni sistemi i analizatori datoteka identifikuju BZ2 datoteke proverom početnog binarnog niza bajtova:

Izaberite ili prevucite datoteke ovde

Privatno - datoteke nikada ne napuštaju vaš uređaj

ili nalepite Ctrl+V
Garancija privatnosti: bez prenosa podataka preko mreže 0 bajtova poslato spoljnim serverima. Sva obrada je izvršena lokalno u bezbednom okruženju vašeg pregledača.

Potpis zaglavlja na nivou bajtova (magični bajtovi)

Operativni sistemi i analizatori datoteka identifikuju BZ2 datoteke proverom početnog binarnog niza bajtova:

HEKSADECIMALNI POTPIS (OFFSET 0):

42 5A 68

ASCII REPREZENTACIJA: BZh

Standardizacija: Otvoreni standard Bzip2-a

Tehničke specifikacije

Arhitektura kontejneraZaglavlje toka („BZh“ i cifra veličine bloka od 1 do 9), zatim kompresovani blokovi podataka i 32-bitna CRC kontrolna suma
KompresijaBurrows-Wheelerova transformacija (BWT), transformacija Move-to-Front (MTF) i Huffmanovo kodiranje
Bajtni redosled (Endianness)Uokviravanje bitnog toka s redosledom bajtova od najznačajnijeg ka najmanje značajnom
Prostori bojaNije primenljivo (tok za kompresiju bajtova)
Kanali i strukturaTok kompresovanih bajtova jedne datoteke
Maksimalne dimenzijeNeograničena dužina toka (podržava datoteke proizvoljne veličine)
TransparentnostPotpuno očuvanje podataka bez gubitaka, uz potpuno podudaranje bajt po bajt pri povratnoj konverziji
Strimovanje i progresivno učitavanjeSekvencijalni prenos blok po blok, s nezavisnom CRC kontrolnom sumom za svaki blok

Tehnička matrica poređenja: BZ2 u odnosu na konkurente

Tehnički atributBZ2 (Trenutno)GZXZZSTD
Osnovni algoritamBurrows-Wheeler-ova transformacija (BWT)Deflate (LZ77 + Huffman)LZMA / LZMA2Finite State Entropy + LZ77
Kompresija u odnosu na GzipVeličina datoteke je 10% - 20% manja nego kod Gzip-aOsnovni standardVeličina datoteke je 20% - 30% manja nego kod Gzip-aVeličina datoteke je 10% - 20% manja nego kod Gzip-a
Brzina dekompresijeSpora (~30-50 MB/s)Brza (~300 MB/s)Umerena (~100 MB/s)Izuzetno brza (>1.5 GB/s)
Kontrolne sume blokova32-bitni CRC po blokuCRC32 za ceo tokCRC64 za tokxxHash64 za tok

Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak

Ekstrakcija se prekida sa porukom 'bzip2: Data integrity error when decompressing'.

Osnovni uzrok: Izmenjeni bit u kompresovanom bloku usled čega inverzna permutaciona matrica BWT-a ne uspeva da prođe CRC32 validaciju.

Oporavak: Koristite uslužni program 'bzip2recover' da spasite neoštećene blokove koji okružuju oštećeni sektor.

Bezbednosna analiza i vektori napada parsera

Implementacije bzip2-a uključuju složeno sortiranje bitskog toka i obradu Hafmanovih tabela, gde su se istorijski javljale greške usled prekoračenja celobrojne vrednosti.

Poznati vektori napada

  • Prekoračenje celobrojne vrednosti pri alokaciji BWT niza za sortiranje (npr. CVE-2016-3189).
  • Upis van granica memorije tokom sklapanja tabele za Hafmanovo dekodiranje.
  • Uskraćivanje usluge (DoS) pomoću specifičnih ulaznih obrazaca koji dovode do najgoreg slučaja kvadratne vremenske složenosti BWT sortiranja.

Najbolje prakse za zaštitu: Dekodirajte BZ2 datoteke pomoću WASM dekodera koji bezbedno upravljaju memorijom i imaju postavljene memorijske granice.

Istorijat i prekretnice

2019Federico Mena Quintero modernizuje održavanje kodne baze bzip2 u okviru inicijativa bzip3 i savremenog softvera otvorenog koda.
2000Izdanjem verzije 1.0 stabilizovan je format bzip2 u Linux distribucijama i sistemima za upravljanje paketima.
1996Julian Seward objavljuje bzip2 0.15 kao zamenu za raniji bzip format koji je imao problema sa patentima.

Ključne prednosti

  • Na arhivama tar sa izvornim kodom, sistemskim dnevnicima i tekstualnim bazama podataka dosledno postiže 10% do 20% bolju kompresiju nego klasični Gzip.
  • Nezavisna arhitektura blokova (100k do 900k) obuhvata 32-bitne CRC kontrolne sume po blokovima radi pouzdane provere integriteta.
  • Izvorno je dostupan u mnogim Linux, BSD i macOS distribucijama; uključenost zavisi od distribucije.

Tehnička ograničenja i nedostaci

  • Znatno sporije brzine kompresije i dekompresije u poređenju sa modernim algoritmima kao što je Zstandard.
  • Kompresuje samo pojedinačne datoteke: za pakovanje više datoteka ili direktorijuma potrebno ga je kombinovati sa TAR-om (.tar.bz2).
  • Veća potrošnja procesora (CPU) tokom dekompresije u poređenju sa Gzip-om ili Zstd-om.

Zanimljivosti

  • Magični bajtovi 'BZh' označavaju 'Burrows-Wheeler Zip Huffman', a nakon njih sledi cifra (od '1' do '9') koja označava veličinu bloka u stotinama kilobajta (npr. 'BZh9' = 900 KB).
  • Izvorni kod Linux kernela distribuirao se isključivo u formatu .tar.bz2 više od decenije, pre prelaska na .xz.
  • Burrows-Wheelerova transformacija ne kompresuje podatke direktno; ona menja redosled znakova tako da se isti znakovi nađu jedan pored drugog, što olakšava njihovo kompresovanje Hafmanovim kodiranjem.

Često postavljana tehnička pitanja

Koja je razlika između .gz i .bz2?

.bz2 koristi Burrows-Wheeler transformaciju da postigne manju veličinu datoteka od .gz, ali je za njegovu kompresiju i dekompresiju potrebno više vremena.

Zašto bzip2 ima komandu 'bzip2recover'?

Pošto bzip2 kompresuje podatke u nezavisnim blokovima od 900 KB, od kojih svaki ima svoju CRC vrednost, bzip2recover može da izvuče neoštećene blokove čak i ako je deo datoteke oštećen.

Kako mogu da raspakujem .tar.bz2 datoteku?

Možete raspakovati .tar.bz2 datoteke direktno u svom veb-pregledaču pomoću aplikacije File2File.app bez pokretanja alata komandne linije.