bzip2 | |
---|---|
Typ | Komprese dat |
Vývojář | Sewarde, Juliane |
Zapsáno v | Xi |
Operační systém | Multiplatformní software |
První vydání | 18. července 1996 |
Nejnovější verze |
|
Čitelné formáty souborů | bzip2 |
Vygenerované formáty souborů | bzip2 |
Licence | BSD licence [1] |
webová stránka | sourceware.org/bzip2/ |
bzip2 je bezplatný a open source nástroj příkazového řádku pro kompresi dat , implementace algoritmu Burrows-Wheeler .
Vyvinul a poprvé publikoval Julian Seward v červenci 1996 ( verze 0.15). Stabilita a popularita kompresoru v průběhu let rostla a verze 1.0 byla zveřejněna koncem roku 2000 .
V souladu s tradicí UNIXu může bzip2provádět pouze jednu operaci najednou: buď komprimovat nebo dekomprimovat, a to pouze pro jeden soubor. Při komprimaci bzip2připojí k názvu souboru příponu " .bz2". Chcete-li sbalit více souborů, jsou nejprve archivovány do jednoho souboru pomocí nástroje tara poté komprimovány pomocí bzip2. Takové archivy mají obvykle příponu „ .tar.bz2“.
bzip2komprimuje většinu souborů efektivněji, ale pomaleji než tradiční nástroje gzipnebo zip. V tomto ohledu je podobný jiným moderním kompresním algoritmům.
bzip2provádí kompresi dat se značným zatížením CPU (vzhledem k jeho matematickému aparátu). bzip2se používají, pokud neexistují žádná omezení na dobu komprese a zatížení CPU , například pro jednorázové zabalení velkého množství dat.
V některých případech je bzip2z hlediska účinnosti komprese nižší než archivátory ( 7-Zipzpůsob komprese LZMA ) a rar. Podle autora programu z roku 2005 je kompresní metoda bzip2v účinnosti komprese nižší o 10-15 % [3] než nejlepší metody známé v té době ( PPM ) [4] , ale zároveň 2x rychlejší v kompresi a 6x rychlejší při vybalování.
Kompresní metoda bzip2funguje takto:
Přibližnou velikost bloku lze vybrat pomocí argumentů příkazového řádku (" -1" pro 100 kB, " -2" pro 200 KB, ..., " -9" pro 900 KB). Každý blok je komprimován nezávisle, komprimované bloky jsou zapisovány sekvenčně jeden za druhým, na začátku každého je použita 48bitová sekvence – magické číslo 0x314159265359 (v kódování ASCII se při zarovnání na hranici bajtů zobrazuje jako „ 1AY & SY"), tedy zápis prvních desetinných míst čísla π ve formátu BCD [5] . Konec souboru je označen 48bitovou konstantou 0x177245385090, což je druhá odmocnina z pí. Na začátku souborů bzip2 je použita následující hlavička: dvoubajtová signatura "BZ", dále označení metody komprese entropie - "h" (Huffman) a velikost bloku (desetinné číslo od 0 do 9).
Použitím nezávislé komprese jednotlivých bloků jsou možné paralelní implementace kompresního nebo dekompresního formátu (dekomprese může vyžadovat offset index pro každý blok) [6] .
Příklady použití bzip2.
# Příkaz pro kompresi souboru "file" soubor bzip2 # nebo bzip2 --komprimovat soubor # Příkaz pro rozbalení souboru "file.bz2" bzip2 -d soubor.bz2 # nebo bzip2 --dekomprimujte soubor.bz2 # nebo soubor bunzip2.bz2 # bunzip2 - kopie bzip2 nebo odkaz na bzip2Argumenty příkazového řádku jsou bzip2v podstatě stejné jako pro gzip.
# Příkaz pro rozbalení archivu tar komprimovaného pomocí bzip2 bzip2 -cd file.tar.bz2 | tar -xvf - # nebo bzip2 --stdout --decompress file.tar.bz2 \ | tar --extract --verbose --file- # Příkaz pro vytvoření archivu tar komprimovaného pomocí bzip2 tar -cvf - files | bzip2 -9 > soubor.tar.bz2 # nebo tar --create --verbose --file - soubory \ | bzip2 -9 > soubor.tar.bz2Verze GNU tar podporuje příznak " -j" (" --bzip2"), který umožňuje vytváření a rozbalování souborů " tar.bz2 " bez použití přesměrování I/O ( pipeline ) . Příklad:
# Balení dat do archivu tar a komprese bzip2 pomocí GNU tar tar -cvjf soubor.tar.bz2 seznam_souborů # nebo tar --create --verbose --bzip2 --file file.tar.bz2 seznam_souborů # Rozbalte archiv tar komprimovaný pomocí bzip2 pomocí GNU tar tar -xvjf soubor.tar.bz2 # nebo tar --extract --verbose --bzip2 --file file.tar.bz2Moderní verze GNU tardokážou automaticky určit metodu komprese dat, a proto lze příznak " -j" (" --bzip2") vynechat. Příklad:
tar -xvf soubor.tar.bz2 # nebo tar --extract --verbose --file file.tar.bz2Kromě toho existuje sada nástrojů pro vyhledávání, zobrazování, obnovu a porovnávání dat ve formátu bzip2:
bzip2 | |
---|---|
Rozšíření | .bz2 |
Podpis | BZh |
Vývojář | Sewarde, Juliane |
Poslední vydání |
|
Typ formátu | Komprese dat |
otevřený formát ? | Ano: BSD licence |
webová stránka | sourceware.org/bz… ( anglicky) |
Archiv .bz2obsahuje proud ( anglicky stream ) komprimovaných dat. Slovo „stream“ se používá proto, že data nelze logicky oddělit a datové bloky jsou komprimovány nezávisle na sobě. Komprimovaná data se skládají z následujících polí:
Název pole | Velikost pole v bitech | Popis |
---|---|---|
.kouzlo | 16 | BZ — konstanta , podpis , magické číslo . |
.verze | osm | Bajt kódující číslo verze. 0 Verze 1 (bzip1). Zastaralé, nepoužívané. h Verze 2 (bzip2). "h" z angličtiny. huffmanovo kódování . |
.hundred_k_blocksize | osm | Velikost nekomprimovaného datového bloku ve stovkách kilobajtů . 1 Sto kB (100 kB). 2 Dvě stě kB (200 kB). … A tak dále 9 Devět set kB (900 kB). |
.compressed_magic | 48 | 0x314159265359 - konstanta , číslo π , zapsané v binárně kódovaném dekadickém kódu (BCD). |
.crc | 32 | Kontrolní součet vypočítaný pro aktuální blok. |
.náhodně | jeden | 0 normální 1 s přidanou náhodností (zastaralé) |
.origPtr | 24 | počáteční ukazatel na pole BWT po konverzi |
.huffman_used_map | 16 | rozsah bitové masky 16 bajtů, "dostupné" / "chybějící" |
.huffman_used_bitmaps | 0..256 | bitová maska použitých znaků, "dostupné"/"chybí" (násobek 16) |
.huffman_groups | 3 | Číslo mezi 2 a 6, počet používaných Huffmanových tabulek . |
.selectors_used | patnáct | Číslo udávající, kolikrát byla Huffmanova tabulka změněna (každých 50 bajtů). |
*.selector_list | 1..6 | bitové sekvence doplněné nulovými bity (0..62) pro Huffmanovy tabulky po MTF (*selectors_used) |
.start_huffman_length | 5 | 0..20 počáteční bitové délky pro Huffmanovy delty |
*.delta_bit_length | 1..40 |
0
další postava
1
změnit délku
{ 1=> snížit délku o 1; 0=> zvětšit délku o 1} (*(symboly+2)*skupiny) |
.obsah | 2...∞ | Datový tok kódovaný pomocí Huffmanových tabulek. Pokračuje až do konce bloku. Maximální délka je 7 372 800 bitů . |
.eos_magic | 48 | 0x177245385090 je konstanta , druhá odmocnina z π (sqrt(pi)) v binárně kódované desítkové soustavě (BCD). |
.crc | 32 | Kontrolní součet vypočtený pro celý stream. |
.vycpávka | 0..7 | Nepoužité bity (0 až 7). Účel: zvětšení velikosti archivu na násobek jednoho bajtu (8 bitů ) ( zarovnání dat ). |
Maximální velikost nekomprimovaného bloku pro klasický formát je 900 kB . Pokud se blok skládá z jednoho opakovaného znaku, po zakódování RLE zabere blok asi 46 mega bajtů (45 899 236 bajtů ) a po všech operacích bude velikost souboru .bz246 bajtů . Pokud je kód opakovaného znaku 251, velikost souboru .bz2bude 40 bajtů a kompresní poměr bude 1 147 480,9:1.
Archivátory a kompresory | |
---|---|
otevřené a zdarma | |
Volný, uvolnit | |
Komerční | |
Příkazový řádek |
Archivní formáty | |
---|---|
Pouze archivace | |
Pouze komprese | |
Archivace a komprese | |
Balení a distribuce softwaru |