bzip2(1) General Commands Manual bzip2(1) JMENO bzip2, bunzip2 - komprimuje a dekomprimuje soubory, pouziva metodu blokoveho trideni, v1.0.8 bzcat - dekomprimuje soubory do standardniho vystupu (stdout) bzip2recover - ziskava data z poskozenych bzip2 souboru POUZITI bzip2 [ -cdfkqstvzVL123456789 ] [ soubory ... ] bunzip2 [ -fkvsVL ] [ soubory ... ] bzcat [ -s ] [ soubory ... ] bzip2recover soubor POPIS bzip2 komprimuje /zhusti ci zmensi/ soubory uzitim Burrow-Wheelerova blokoveho tridiciho textoveho komprimacniho algoritmu a Huffmanova kodovani. Komprese je vseobecne mnohem lepsi nez dosahuji obvykle komprimacni nastroje zalozene na LZ77/LZ78 algoritmech (napr. gzip) a blizi se vykonu PPM rodiny statistickych kompresoru. Volby prikazoveho radku jsou zamerne velmi podobne volbam nastroje GNU gzip, ale nejsou zcela totozne. bzip2 ocekava prikaz doprovazeny seznamem jmen souboru na prikazovem radku. Kazdy soubor je nahrazen komprimovanou verzi sebe sama se jmenem "puvodni_jmeno.bz2". Kazdy komprimovany soubor ma stejne datum zmeny, pristupova prava a je-li to mozne, take stejne vlastniky odpovidajici puvodnimu souboru, takze tyto vlastnosti mohou byt spravne obnoveny pri dekomprimaci. Zachazeni se jmenem souboru je mozno povazovat za hloupe na souborovych systemech, kterym chybi mechanismus zabezpeceni puvodniho jmena souboru, pristupovych prav, vlastnictvi nebo datumu ci maji zavazne omezeni delky souboroveho jmena (napr. MS-DOS). bzip2 a bunzip2 standardne neprepisuji jiz existujici soubory. Jestlize toto zadate, uzijte volbu -f. Pokud neni urceno zadne jmeno, bzip2 komprimuje standardni vstup do standardniho vystupu. V tom pripade bzip2 odmitne zapsat komprimovany vystup na terminal, protoze by to bylo zcela nesrozumitelne a tudiz zbytecne. (pozn. prekl: bzip2 | cat jiz ano, ale psssst) bunzip2 (nebo bzip2 -d) dekomprimuje vsechny oznacene soubory. Soubory, ktere nebyly vytvoreny bzip2 budou rozeznany, vyrazeny a jejich jmena obsazena ve varovnem hlaseni. bzip2 se pokousi vyvodit jmeno dekomprimovaneho souboru z komprimovaneho, jak je uvedeno v nasledujicich prikladech. soubor.bz2 prejde na soubor soubor.bz prejde na soubor soubor.tbz2 prejde na soubor.tar soubor.tbz prejde na soubor.tar libeVamjmeno prejde na libeVamjmeno.out Jestlize souborove jmeno nekonci jednou z nasledujicich moznosti .bz2, .bz, .tbz2 nebo .tbz, bzip2 si postezuje, ze nemuze vylustit jmeno puvodniho souboru a pouzije puvodni jmeno se zakoncenim .out. Stejne jako pri kompresi, chybejici jmeno zpusobi dekompresi ze standardniho vstupu do standardniho vystupu. S tim rozdilem, ze nyni neni duvod odmitnout vystup na terminal. bunzip2 spravne dekomprimuje soubor ktery je zretezenim dvou ci vice komprimovanych souboru. Vysledkem je zretezeni odpovidajicich nekomprimovanych souboru. Testovani celistvosti (-t) zretezenych komprimovanych souboru je take podporovano. Muzete take komprimovat a dekomprimovat soubory do standardniho vystupu volbou -c. Hromadne soubory mohou byt komprimovany a dekomprimovany take tak. Vysledne vystupy jsou postupne naskladany do standardniho vystupu (stdout). Komprese hromadnych souboru timto zpusobem vytvari proud obsahujici hromadne komprimovane soubory. Takovy proud muze byt spravne dekomprimovan pouze bzip2 version 0.9.0 nebo vyssi. Nizsi verze bzip2 se zastavi po dekomprimovani prvniho souboru v proudu. bzcat (or bzip2 -dc) dekomprimuje vsechny uvedene soubory do standardniho vystupu. bzip2 precte argumenty z promennych prostredi BZIP2 a BZIP, v tomto poradi, a zpracuje je jeste pred nactenim argumentu z prikazove radky. Timto zpusobem mohou byt nastaveny obecne(defaultni) argumenty. Komprese je vzdy provedena, dokonce i tehdy, je-li ziskany komprimovany soubor nepatrne vetsi nez puvodni. U souboru mensich nez zhruba sto bajtu je sklon ke zvetseni, nebot komprimacni mechanismus ma stalou rezii kolem 50 bajtu. Nahodna data (uvazovan vystup vetsiny souborovych kompresoru) jsou kodovana v 8.05 bitech na bajt pri rozpeti kolem 0.5%. Jako sebekontrolni mechanismus bzip2 uziva 32-bit CRC k overeni identity dekomprimovane verze s originalem. To chrani proti deformaci komprimovanych dat a proti nerozeznanych chybam v bzip2 (doufejme, ze velmi nepravdepodobnych). Moznost nerozpoznaneho poskozeni dat je nepatrna, v pomeru 1 ku ctyrem bilionum na kazdy zpracovany soubor. Uvedomme si vsak, ze kontrola pri dekompresi muze pouze oznamit, ze je neco spatne. Nemuze pomoci ziskat puvodni nekomprimovana data. Pokud se chcete pokusit ziskat z poskozenych souboru data, pouzijte program bzip2recover. Navratove hodnoty: 0 spravny konec, 1 problemy prostredi (soubor nebyl nalezen, spatne volby, I/O (vstupne/vystupni) chyby), 2 oznacuje poruseni komprimovaneho souboru, 3 vnitrni logickou chybu (tj. bug), jenz zpusobila pad bzip2. VOLBY -c --stdout Komprimuje nebo dekomprimuje do standardniho vystupu -d --decompress Vyvola dekompresi. bzip2, bunzip2 and bzcat jsou ve skutecnosti stejne programy a rozhodnuti jake cinnosti budou provedeny zavisi na uzitem jmenu. Avsak volba parametrem prevysuje nad timto mechanismem a vyvola bzip2 pro dekompresi. -z --compress Protiklad k -d. Zpusobi kompresi bez ohledu na volane jmeno. -t --test Kontroluje celistvost uvedeneho souboru, ale nedekomprimuje jej. Ve skutecnosti provadi zkusebni dekompresi a zahodi vysledek. -f --force Prepise vystupni soubory. Normalne bzip2 neprepisuje existujici vystupni soubory. Take bzip2 prerusi pevne odkazy k souborum, coz by jinak neprovedl. bzip2 normalne odmitne dekomprimovat soubory, jimz nesedi "magicka hlavicka". Pri volbe -f (--force) bzip2 dekomprimuje i tyto soubory, cimz napodobuje chovani GNU gzip. -k --keep Zachova (nemaze) vstupni soubory behem komprese nebo dekomprese. -s --small Omezi velikost pouzite pameti pro kompresi, dekompresi i testovani. Pri dekompresi a testovani je uzivan upraveny algoritmus, jenz vyzaduje pouze 2.5 bajtu pro blok. To znamena, ze jakykoliv soubor muze byt dekomprimovan pouze s 2300kB dostupne pameti, avsak polovicni rychlosti. Behem komprese, znak -s vybere velikost bloku 200kB, cimz prislusne omezi velikost uzite pameti za cenu nizsiho kompresniho pomeru. Tedy, ma-li vas pocitac 8MB ci mene operacni pameti uzijte volbu -s. Ctete RIZENI PAMETI dale. -q --quiet Potlaci nepodstatna varovani. Zpravy tykajici se I/O chyb a jinych kritickych udalosti nebudou potlaceny. -v --verbose Upovidana volba -- ukazuje pro kazdy zpracovany soubor kompresni pomer. Dale volba -v zvysuje vymluvnost, chrli mnozstvi informaci, ktere jsou zajimave zejmena pro diagnosticke ucely. -L --license -V --version Zobrazi verzi, licencni podminky. -1 (ci --fast) az -9 (ci --best) Nastavi velikost bloku na 100kB, 200kB .. 900kB pro komprimaci. Nema zadny vliv na dekomprimaci. Cti RIZENI PAMETI dale. Volby --fast a --best jsou podporovany z duvodu kompatability s GNU gzip. Popravde, --fast toho moc neurychli. A --best pouze zvoli defaultni chovani. -- Povazuje vsechny nasledujici argumenty za souborova jmena, i pokud zacinaji pomlckou. Takze muzete zachazet take se soubory s pomlckou napriklad bzip2 -- -meskvelevyspekulovanejmenosouboru. --repetitive-fast --repetitive-best Tato volba je zbytecna ve verzi 0.9.5 a vyssich. Poskytovala urcite surove ovladani chovani tridiciho algoritmu v predchozich verzich a byla v leccem uzitecna. Verze 0.9.5 a vyssi maji zdokonaleny algoritmus, ktery cini tuto volbu bezvyznamnou. RIZENI PAMETI bzip2 komprimuje velke soubory v blocich. Velikost bloku ma vliv jednak na dosazeny kompresni pomer a take na mnozstvi potrebne pameti pro kompresi a dekompresi. Volby -1 az -9 urcuji velikost bloku od 100kB do 900KB (standard). Pri dekompresi je velikost bloku, uzita pro kompresi, nactena z hlavicky zkomprimovaneho souboru a bunzip2 jiz sam vyhradi dostatek pameti pro dekompresi. Protoze velikost bloku je ulozena ve zkomprimovanem souboru, volby -1 az -9 jsou zbytecne a proto pri dekompresi zustanou nepovsimnuty. Kompresni a dekompresni pametove pozadavky v bajtech mohou byt odhadnuty takto: Komprese: 400k + (8 x velikost bloku) Dekomprese: 100k + (4 x velikost bloku) nebo 100k + (2.5 x velikost bloku) Vetsi bloky neprinaseji primereny narust komprese, nebot vetsina komprese je vytvorena v prvnich dvou ci trech stech tisicich bajtu bloku (coz tesi mysl uzivatele malych stroju). Je take dulezite si uvedomit, ze dekompresni pametove pozadavky jsou nastaveny v dobe komprese vyberem velikosti bloku. Pro soubor komprimovany s prednastavenou velikosti bloku 900kB bunzip2 vyzaduje pri dekompresi 3700kB pameti. Pro umozneni dekomprimovani libovolneho souboru na pocitaci s pouze 4MB operacni pameti ma bunzip2 volbu pro dekompresi uzivajici priblizne polovicni mnozstvi pameti, kolem 2300kB. Rychlost je take snizena na polovinu, proto byste tuto moznost meli uzit pouze, je-li to opravdu nutne. Odpovidajici volba je -s. Obecne receno, zkuste a uzijte nejvetsi moznou velikost bloku v zajmu dosazeni maximalni komprese. Rychlost komprese a dekomprese prakticky neni velikosti bloku ovlivnena. Dale se podivame na uplatneni bzip2 na soubory, ktere se vejdou do jednoho bloku. To je vetsina souboru, se kterymi se setkate, pokud pouzijete velkou blokovou velikost. Mnozstvi skutecne uzite pameti je primerena velikosti takoveho souboru, protoze soubor je mensi nez blok. Napriklad prikaz komprimace souboru velkeho 20kB s volbou -9 zpusobi, ze kompresor prideli asi 7600kB pameti, ale pouzije pouze 400k + (20000 * 8) = 560kB. Podobne dekompresor prideli 3700kB ale pouzije pouze 100kB + (2000 * 4) = 180KB. Nasleduje tabulka sestavajici z hodnot maximalniho uziti pameti pro ruzne velikosti bloku. Obsahuje take vyslednou komprimovanou velikost baliku 14 souboru Calgary Text Compression Corpus majici puvodni celkovou velikost 3,141,622 bajtu. Tento udaj dovoli nahlednout vlivu velikosti bloku na kompresi. Tabulka smeruje k vykladu vyhod uziti vetsich bloku pro vetsi soubory. Komprese Dekomprese Dekomprese Velikost volba pamet pamet -s pamet korpusu -1 1200k 500k 350k 914704 -2 2000k 900k 600k 877703 -3 2800k 1300k 850k 860338 -4 3600k 1700k 1100k 846899 -5 4400k 2100k 1350k 845160 -6 5200k 2500k 1600k 838626 -7 6100k 2900k 1850k 834096 -8 6800k 3300k 2100k 828642 -9 7600k 3700k 2350k 828642 ZISKANI DAT Z POSKOZENYCH SOUBORU bzip2 komprimuje soubory v blocich, obycejne 900kB velkych. S kazdych blokem je nakladano nezavisle. Jestlize chyba zaznamu ci prenosu se projevi v nekterem z bloku, .bz2 soubor je poskozen, ale presto je mozne ziskat data z neposkozenych bloku data. Komprimovane prohlaseni kazdeho bloku je vymezeno 48-bit predlohou, ktera umoznuje nalezeni hranic bloku s prijatelnou presnosti. Kazdy blok take uchovava vlastni 32-bit CRC a tak poskozene bloky mohou byt rozliseny od neposkozenych. bzip2recover je jednoduchy program, jehoz ulohou je hledat bloky v .bz2 souborech a zapisovat kazdy blok do vlastniho souboru .bz2 Muzete uzit bzip2 -t , jenz overuje spojitost vyslednych souboru a dekomprimuje neposkozene bez zapisu vystupu. bzip2recover vyzaduje jednoduse jmeno poskozeneho souboru a vytvari cislovane soubory "rec0001soubor.bz2", "rec002soubor.bz2" atd., obsahujici rozbalene bloky. Pojmenovani vystupnich souboru je navrzeno tak, aby pouziti zolikovych znaku zpusobilo spravnou sestavu souboru. Napr. "bzip2 -dc rec*file.bz2 > ziskana_data". Pouziti bzip2recover je spojeno s velkymi .bz2 soubory, prave takove obsahuji mnoho bloku. Je zrejme marne pokouset se zachranit jednoblokovy poskozeny soubor, nebot samotny poskozeny blok nemuze byt obnoven. Jestlize usilujete o zmenseni rizika ztraty dat zapricinenou chybou media ci prenosu, uvazujte o kompresi s malou velikosti bloku. POZNAMKA K VYKONU Tridici cast komprese shromazduje podobne retezce v souboru. Z toho duvodu muze byt mnohem pomalejsi komprimace souboru, obsahujiciho velmi dlouhe nudle opakujicich se znaku, napr. "aabaabaabaab ... ", nez je obvykle. Verze 0.9.5 a vyssi toto mnohem lepe travi nezli predchozi verze. Pomer mezi nejhorsim a prumernych casem komprese je kolem 10:1. Predchozi verze statecne dosahovaly pomeru 100:1. Pokud zadate volbu -vvvv, muzete sledovat prubeh v detailu. Dekompresni rychlost tim neni ovlivnena. bzip2 obvykle obsadi nekolik megabajtu pameti a pak je vyplnuje doslova nahodne rozmarilym zpusobem. To znamena, ze vykon komprese i dekomprese je silne ovlivnen rychlosti obsluhy cache. Proto male zmeny v kodu pristupu cache by mely zpusobit nepomerne velke zlepseni vykonu. Vykon bzip2 bude pravdepodobne nejlepsi na strojich s velmi velkymi cache. NASTRAHY I/O chybove zpravy nejsou tak uzitecne, jak by mohly byt. bzip2 se pilne pokousi rozeznat I/O chyby a slusne ukoncit cinnost, ale detailni zpravy o problemu jsou obcas ponekud matouci. This manual page pertains to version 1.0.8 of bzip2. Compressed data created by this version is entirely forwards and backwards compatible with the previous public releases, versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 and above, but with the following exception: 0.9.0 and above can correctly decompress multiple concatenated compressed files. 0.1pl2 cannot do this; it will stop after decompressing just the first file in the stream. bzip2recover verze starsi nez 1.0.2 pouzivaly 32-bitovou reprezentaci pozice v komprimovanem souboru, a proto se nevyporadaly se soubory vetsimi nez 512 MB. Verze 1.0.2 a novejsi pouzivaji 64-bitovou reprezentaci pozice na systemech, kde je to podporovano (GNU systemy a Windows). Pro zjiteni, zda byl bzip2recover skompilovan s timto omezenim, spustte ho bez parametru. Kdekoliv si muzete skompilovat verzi bez tohoto omezeni, pokud nastavite MaybeUInt64 na nejaky typ odpovidajici unsigned 64-bit integer. AUTOR Julian Seward, jseward@acm.org. https://sourceware.org/bzip2/ Myslenky vlozene do bzip2 pochazeji od nasledujicich lidi: Michael Burrows a David Wheeler (bloky radici premena), David Wheeler (opet, Huffmanovo kodovani), Peter Fenwick (strukturovany model kodovani v puvodnim bzip, a rada zdokonaleni), Alistair Moffat, Radford Neal a Ian Witten (aritmeticke kodovani v puvodnim bzip). Mnoho jim vdecim za jejich pomoc, podporu a rady. Pro odkazy na zdrojovou dokumentaci se podivejte do prirucky v balicku zdrojoveho kodu. Christian von Roques me privedl k hledani rychlejsiho tridiciho algoritmu, to pro zvyseni rychlosti komprese. Bela Lubkin me podporil pri zdokonaleni toho nejhorsiho pripadu kompresniho vykonu. Skripty bz* jsou odvozeny od GNU gzip. Mnoho lidi poslalo zaplaty, pomohlo s problemy v prenositelnosti, pujcilo stroje, dalo rady a byli obecne napomocni. PREKLAD Preklad teto prirucky do spanelstiny vytvorili Karel Dusek a Petr Sykora Tento preklad je bezplatna dokumentace; Prectete si GNU General Public License Version 3 nebo novejsi ohledne podminek autorskych prav. Neexistuje ZADNA ODPOVEDNOST. Pokud narazite na nejake chyby v prekladu teto prirucky, poslete e-mail na adresu . bzip2(1)