Bzip2

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. május 5-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

bzip2
Típusú Adattömörítés
Fejlesztő Seward, Julian
Beírva Xi
Operációs rendszer Többplatformos szoftver
Első kiadás 1996. július 18
legújabb verzió
Olvasható fájlformátumok bzip2
Generált fájlformátumok bzip2
Engedély BSD licenc [1]
Weboldal sourceware.org/bzip2/

A bzip2  egy ingyenes és nyílt forráskódú parancssori segédprogram adattömörítéshez , a Burrows-Wheeler algoritmus megvalósítása .

Julian Seward fejlesztette ki és adta ki először 1996  júliusában ( 0.15-ös verzió). A kompresszor stabilitása és népszerűsége az évek során nőtt, és az 1.0-s verzió 2000 végén jelent meg .

Hatékonyság

A UNIX hagyományainak megfelelően bzip2egyszerre csak egy műveletet tud végrehajtani: vagy tömöríteni vagy kicsomagolni, és csak egy fájlra. Tömörítéskor a " " kiterjesztéstbzip2 fűzi a fájlnévhez. Több fájl becsomagolásához először egyetlen fájlba archiválja azokat egy segédprogrammal , majd tömöríti a segítségével . Az ilyen archívumok általában " " kiterjesztéssel rendelkeznek . .bz2tarbzip2.tar.bz2

bzip2a legtöbb fájlt hatékonyabban tömöríti, de lassabban, mint a hagyományos segédprogramok gzipvagy zip. Ebből a szempontból hasonló a többi modern tömörítési algoritmushoz.

bzip2adattömörítést végez a CPU jelentős megterhelésével (matematikai apparátusa miatt). bzip2akkor használatosak, ha nincsenek korlátozások a tömörítési időre és a CPU -terhelésre vonatkozóan, például nagy mennyiségű adat egyszeri csomagolásához .

Egyes esetekben bzip2a tömörítési hatékonyság szempontjából rosszabb, mint az archiválók ( LZMA7-Zip tömörítési módszer ) és . A 2005-ös program szerzője szerint a tömörítési módszer tömörítési hatékonyságában 10-15%-kal [3] gyengébb az akkoriban ismert legjobb módszerekhez képest ( PPM ) [4] , ugyanakkor 2-szer gyorsabb a tömörítés és 6-szor gyorsabb kicsomagoláskor. rarbzip2

Az algoritmus leírása

A tömörítési módszer bzip2a következőképpen működik:

A hozzávetőleges blokkméret parancssori argumentumokkal választható ki (" -1" 100 kilobyte-hoz, " -2" 200 KB-hoz, ..., " -9" 900 KB-hoz). Az egyes blokkok egymástól függetlenül vannak tömörítve, a tömörített blokkok egymás után kerülnek kiírásra, mindegyik elején egy 48 bites szekvencia kerül felhasználásra - a 0x314159265359 mágikus szám (ASCII kódolásban bájthatárhoz igazítva a következőképpen jelenik meg: " 1AY & SY"), azaz a π szám első tizedesjegyeinek beírása BCD formátumban [5] . A fájl végét a 48 bites 0x177245385090 konstans jelöli, amely a pi négyzetgyöke. A bzip2 fájlok elején a következő fejléc használatos: a "BZ" kétbájtos aláírás, majd az entrópiatömörítési módszer jelzése - "h" (Huffman) és a blokkméret (0-tól 9-ig tizedes szám).

Az egyes blokkok független tömörítésével párhuzamos tömörítési vagy kicsomagolási formátumú implementációk is lehetségesek (a kitömörítéshez minden blokkhoz eltolási indexre lehet szükség) [6] .

Használat

Használati példák bzip2.

# Parancs a "file" fájl tömörítésére bzip2 fájl # vagy bzip2 -- fájl tömörítése # Parancs a "file.bz2" fájl kicsomagolásához bzip2 -d fájl.bz2 # vagy bzip2 -- a fájl kitömörítése.bz2 # vagy bunzip2 fájl.bz2 # bunzip2 - a bzip2 másolata vagy hivatkozás a bzip2-re

A parancssori argumentumok bzip2alapvetően ugyanazok, mint a gzip.

# Parancs a bzip2-vel tömörített tar archívum kicsomagolásához bzip2 -cd file.tar.bz2 | tar -xvf - # vagy bzip2 --stdout --decompress file.tar.bz2 \ | tar --extract --verbose --file- # Parancs a bzip2 tar -cvf - fájlokkal tömörített tar archívum létrehozásához | bzip2 -9 > file.tar.bz2 # vagy tar --create --verbose --file - files \ | bzip2 -9 > file.tar.bz2

A GNU tar verzió támogatja a " -j" ( " " ) jelzőt, amely lehetővé teszi a " tar.bz2 " fájlok --bzip2létrehozását és kicsomagolását I/O átirányítások ( pipeline ) használata nélkül . Példa:  

# Adatok csomagolása tar archívumba és bzip2 tömörítés GNU tar segítségével tar -cvjf file.tar.bz2 list_of_files # vagy tar --create --verbose --bzip2 --file file.tar.bz2 list_of_files # Csomagolja ki a bzip2-vel tömörített tar archívumot a GNU tar használatával tar -xvjf fájl.tar.bz2 # vagy tar --extract --verbose --bzip2 --file file.tar.bz2

A GNU modern verziói tarautomatikusan meg tudják határozni az adattömörítési módszert, így a " -j" (" --bzip2") jelző elhagyható. Példa:

tar -xvf fájl.tar.bz2 # vagy tar --extract --verbose --file file.tar.bz2

Ezenkívül van egy sor segédprogram az adatok kereséséhez, megjelenítéséhez, visszaállításához és összehasonlításához a következő formátumban bzip2:

  • bzcat - az adatok kicsomagolása és kimenete a terminálra;
  • bzmore, bzless — adatok kicsomagolása és oldalankénti kimenet a terminálra;
  • bzcmp - két fájl kicsomagolása, a tartalom összehasonlítása és az eredmény jelentése: „egyenlő” vagy „nem egyenlő”;
  • bzdiff - két fájl kicsomagolása, a tartalom összehasonlítása és a különbségek megjelenítése;
  • bzgrep, bzegrep, bzfgrep — adatok kicsomagolása és keresés a kicsomagoltban;
  • bzip2recover - a csak kicsomagolható blokkok kicsomagolása.

Fájlformátum

bzip2
Kiterjesztés .bz2
Aláírás BZh
Fejlesztő Seward, Julian
Legutolsó kiadás
Formátum típusa Adattömörítés
nyílt formátum ? Igen: BSD licenc
Weboldal sourceware.org/bz… ​(  angol)

A " " archívum tömörített adatok .bz2folyamát ( angol  stream ) tartalmazza. A "folyam" szót azért használjuk, mert az adatok logikailag nem választhatók szét, és az adatblokkok egymástól függetlenül tömörítésre kerülnek. A tömörített adatok a következő mezőkből állnak:

  • 4 bájtos fejléc;
  • nulla vagy több blokk különböző méretű tömörített adatokból;
  • a tömörített adatok végét jelző markert és a teljes adatfolyamra számított 32 bites ellenőrző összeget (CRC);
  • néhány fel nem használt bit a folyam méretének egész számú bájtra való feltöltéséhez.
Mező neve A mező mérete bitben Leírás
.varázslat 16 BZ — állandó , aláírás , bűvös szám .
.változat nyolc A verziószámot kódoló bájt. 0 1-es verzió (bzip1). Elavult, nem használt. h 2. verzió (bzip2). "h" angolból.  huffman kódolás .
.hundred_k_blocksize nyolc A tömörítetlen adatblokk mérete több száz kilobájtban . 1 Száz KB (100 KB). 2 Kétszáz KB (200 KB). … Stb 9 Kilencszáz KB (900 KB).
.compressed_magic 48 0x314159265359 - konstans , a π szám , binárisan kódolt decimális kóddal (BCD) írva .
.crc 32 Az aktuális blokkra számított ellenőrző összeg.
.véletlenszerűsített egy 0 Normál 1 hozzáadott véletlenszerűséggel (elavult)
.origPtr 24 indítsa el a mutatót a BWT tömbhöz a konvertálás után
.huffman_used_map 16 16 bájtos bitmaszk tartomány, "elérhető" / "hiányzik"
.huffman_used_bitmaps 0..256 használt karakterek bitmaszkja, "elérhető"/"hiányzik" (16-os többszörös)
.huffman_groups 3 2 és 6 közötti szám, a használatban lévő Huffman -táblák száma .
.selectors_used tizenöt Egy szám, amely azt jelzi, hogy a Huffman -tábla hányszor változott (50 bájtonként).
*.selector_list 1...6 nulla bittel kitömött bitsorozatok (0..62) a Huffman-táblákhoz az MTF után (*selectors_used)
.start_huffman_length 5 0...20 kezdeti bithossz a Huffman-deltákhoz
*.delta_bit_length 1..40 0 következő karakter 1 változtassa meg a hosszt

{ 1=> hosszának csökkentése 1-gyel; 0=> hossz növelése 1}-al (*(szimbólumok+2)*csoportok)

.tartalom 2...∞ Huffman táblákkal kódolt adatfolyam. A blokk végéig folytatódik. A maximális hossz 7 372 800 bit .
.eos_magic 48 0x177245385090 egy konstans , a π négyzetgyöke (sqrt(pi)) binárisan kódolt decimális (BCD) formában.
.crc 32 A teljes adatfolyamra kiszámított ellenőrző összeg .
.párnázás 0...7 Fel nem használt bitek (0-tól 7-ig). Cél: az archívum méretének növelése egy bájt többszörösére (8 bit ) ( adatigazítás ).

A klasszikus formátum maximális tömörítetlen blokkmérete 900 kilobájt . Ha a blokk egy ismétlődő karakterből áll, akkor az RLE kódolás után a blokk körülbelül 46 megabájt (45 899 236 bájt ) lesz, és minden művelet után a fájl mérete .bz246 bájt lesz . Ha az ismétlődő karakterkód 251, a fájl mérete .bz240 bájt , a tömörítési arány pedig 1 147 480,9:1 lesz.

Jegyzetek

  1. bzip2 : Kezdőlap (lefelé) . Julian Seward . „Miért akarnám használni? [..] Mert nyílt forráskódú (BSD-stílusú licenc), és amennyire én tudom, szabadalommentes. Hozzáférés dátuma: 2008. szeptember 27. Az eredetiből archiválva : 2012. február 15. 
  2. 1 2 https://sourceware.org/pub/bzip2/
  3. bzip2 és libbzip2 archiválva 2006. december 25-én a Wayback Machine -nél: "Általában az elérhető legjobb technikák (a statisztikai tömörítők PPM családja) 10-15%-án belül tömöríti a fájlokat"
  4. Jelenleg a PAQ módszer különféle implementációi a leghatékonyabban tömörítettek . Ennek a módszernek a használata azonban rendkívül nehézkes az alacsony teljesítmény miatt (a tömörítés sok időt igényel).
  5. Hakbeom Jang; Channoh Kim, Jae W. Lee. Változó hosszúságú dekompressziós algoritmusok  gyakorlati spekulatív párhuzamosítása . Nyelvek, fordítók és eszközök beágyazott rendszerekhez konferencia 2013 (2013. június 20–21.). - "A bzip2 fájlformátum meghatároz egy 48 bites mintát, az úgynevezett mágikus fejlécet (0x314159265359), amely egy új tömörített blokk kezdetét jelzi." Letöltve: 2015. július 3. Az eredetiből archiválva : 2016. január 28..
  6. Dbzip2 - MediaWiki . Letöltve: 2018. augusztus 17. Az eredetiből archiválva : 2018. augusztus 18..

Linkek