bzip2

bzip2(1)							      bzip2(1)



JMENO
       bzip2,  bunzip2	-  komprimuje  a  dekomprimuje soubory, pouziva metodu
       blokoveho trideni v1.0
       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 kom-
       primacni	 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 sez-
       namem jmen souboru na prikazovem radku.	Kazdy soubor je nahrazen komp-
       rimovanou 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. DOS).

       bzip2  and  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, coz
       se muze zdat zcela nepochopitelne a tudiz zbytecne. Ale ...

       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  kompri-
       movaneho, jak je uvedeno v nasledujicich prikladech.

	      soubor.bz2    vytvoren	soubor
	      soubor.bz			soubor
	      soubor.tbz2		soubor.tar
	      soubor.tbz		soubor.tar
	      libeVamjmeno  vytvoren	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.

       bunzip2 spravne dekomprimuje soubor ktery je zretezenim	dvou  ci  vice
       komprimovanych souboru. Vysledkem je zretezeni odpovidajicich nekompri-
       movanych 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 stan-
       dardniho vystupu.

       bzip2 precte argumenty z promennych prostredi BZIP2 and BZIP,  v	 tomto
       poradi,	a zpracuje je jeste pred nactenim argumentu z prikazove radky.
       Timto zpusobem mohou byt ziskany obecne 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 iden-
       tity dekomprimovane verze s originalem.	To chrani proti deformaci kom-
       primovanych  dat	 a  proti  nerozeznanych  chybam v bzip2 (doufejme, ze
       velmi nepravdepodobnych). Moznost nerozpoznaneho poskozeni dat je nepa-
       trna,  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 chyby), 2 oznacuje  poruseni	komprimovaneho
       souboru,	 3  vnitrni  logickou  chybu  (eg,  bug), jenz zpusobuje bzip2
       nouzi.



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 prevysuje na timto mechanis-
	      mem a vyvola bzip2 pro dekompresi.

       -z --compress
	      Protiklad k -d. Zpusobi kompresi bez ohledu na volane jmeno.

       -t --test
	      Kontroluje  celistvost  uvedeneho souboru, ale nekomprimuje 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.

       -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	 algo-
	      ritmus,  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  kom-
	      presniho	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	infor-
	      maci, ktere jsou zajimave zejmena pro diagnosticke ucely.

       -L --license -V --version
	      Zobrazi verzi, licencni podminky.

       -1 to -9
	      Nastavi  velikost bloku na 100kB, 200kB .. 900kB pro komprimaci.
	      Nema zadny vliv na dekomprimaci. Cti RIZENI PAMETI dale.

       --     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 kom-
       presi 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 dekom-
       presi zustanou nepovsimnuty.

       Kompresni  a  dekompresni pametove pozadavky v bajtech mohou byt odhad-
       nuty 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	 komp-
       rese  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  neni
       velikosti bloku ovlivnena.

       Dale se podivame na uplatneni bzip2 na soubory, ktere se vejdou do jed-
       noho  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   Corpus
	   volba   pamet       pamet	   -s pamet   velikost

	    -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.is

       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 jed-
       noblokovy 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.
       Domnivam	 se,  ze vykon bzip2 bude nejlepsi na strojich s velmi velkymi
       cache.


VAROVANI
       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.

       Tato prirucka nalezi k verzi 1.0 bzip2.	 Komprimovana  data  vytvorena
       touto   verzi  jsou  zcela  oboustranne	slucitelna  s  predchazejicimi
       verejnymi vydanimi, verzemi 0.1pl2, 0.9.0 a 0.9.5. Ovsem s  nasledujici
       vyjimkou:  0.9.0	 a  vyssi  umi spravne dekomprimovat zretezene kompri-
       movane soubory. 0.1pl2 to neumi, a zastavi se po	 dokonceni  dekomprese
       prvniho souboru v proudu.

       bzip2recover pouziva 32-bit cele cislo oznacujici bitovou pozici v kom-
       primovanem souboru, proto nemuze zvladnout soubory vetsi 512MB. To vsak
       muze byt snadno vyreseno.



AUTOR
       Julian Seward, jseward@acm.org.

       http://sourceware.cygnus.com/bzip2 http://www.muraroa.demon.co.uk

       Myslenky vlozene do bzip2 pochazeji od nasledujicich lidi: Michael Bur-
       rows a David Wheeler (bloky radici premena), David Wheeler (opet, Huff-
       manovo	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.	Mnoho  lidi  poslalo  zaplaty,
       pomohli	s problemy v prenositelnosti, pujcili stroje, dali rady a byli
       obecne napomocni.


PRELOZIL
       Karel Dusek (kargee.dusek@seznam.cz).



								      bzip2(1)

Personal Tools