Provided by:
manpages-cs_0.17.20080113-1_all 
JMÉNO
bzip2, bunzip2 - komprimuje a dekomprimuje soubory, používá metodu
blokového třídění, v1.0.3
bzcat - dekomprimuje soubory do standardního výstupu (stdout)
bzip2recover - získává data z poškozených bzip2 souborů
POUŽITÍ
bzip2 [ -cdfkqstvzVL123456789 ] [ soubory ... ]
bunzip2 [ -fkvsVL ] [ soubory ... ]
bzcat [ -s ] [ soubory ... ]
bzip2recover soubor
POPIS
bzip2 komprimuje /zhustí či zmenší/ soubory užitím Burrow-Wheelerova
blokového třídícího textového komprimačního algoritmu a Huffmanova
kódování. Komprese je všeobecně mnohem lepší než dosahují obvyklé
komprimační nástroje založené na LZ77/LZ78 algoritmech (např. gzip) a
blíží se výkonu PPM rodiny statistických kompresorů.
Volby příkazového řádku jsou záměrně velmi podobné volbám nástroje GNU
gzip, ale nejsou zcela totožné.
bzip2 očekává příkaz doprovázený seznamem jmen souborů na příkazovém
řádku. Každý soubor je nahrazen komprimovanou verzí sebe sama se
jménem "původní_jméno.bz2".
Každý komprimovaný soubor má stejné datum změny, přístupová práva a je-
li to možné, také stejné vlastníky odpovídající původnímu souboru,
takže tyto vlastnosti mohou být správně obnoveny při dekomprimaci.
Zacházení se jménem souboru je možno považovat za hloupé na souborových
systémech, kterým chybí mechanismus zabezpečení původního jména
souboru, přístupových práv, vlastnictví nebo datumů či mají závažné
omezení délky souborového jména (např. MS-DOS).
bzip2 a bunzip2 standardně nepřepisují již existující soubory. Jestliže
toto žádáte, užijte volbu -f.
Pokud není určeno žádné jméno, bzip2 komprimuje standardní vstup do
standardního výstupu.
V tom případě bzip2 odmítne zapsat komprimovaný výstup na terminál,
protože by to bylo zcela nesrozumitelné a tudíž zbytečné. (pozn.
překl: bzip2 | cat již ano, ale psssst)
bunzip2 (nebo bzip2 -d) dekomprimuje všechny označené soubory. Soubory,
které nebyly vytvořeny bzip2 budou rozeznány, vyřazeny a jejich jména
obsažena ve varovném hlášení.
bzip2 se pokouší vyvodit jméno dekomprimovaného souboru z
komprimovaného, jak je uvedeno v následujících příkladech.
soubor.bz2 přejde na soubor
soubor.bz soubor
soubor.tbz2 soubor.tar
soubor.tbz soubor.tar
libéVámjméno přejde na libéVámjméno.out
Jestliže souborové jméno nekončí jednou z následujících možností .bz2,
.bz, .tbz2 nebo .tbz, bzip2 si postěžuje, že nemůže vyluštit jméno
původního souboru a použije původní jméno se zakončením .out.
Stejně jako při kompresi, chybějící jméno způsobí dekompresi ze
standardního vstupu do standardního výstupu. S tím rozdílem, že nyní
není důvod odmítnout výstup na terminál.
bunzip2 správně dekomprimuje soubor který je zřetězením dvou či více
komprimovaných souborů. Výsledkem je zřetězení odpovídajících
nekomprimovaných souborů. Testovaní celistvosti (-t) zřetězených
komprimovaných souborů je také podporováno.
Můžete také komprimovat a dekomprimovat soubory do standardního výstupu
volbou -c. Hromadné soubory mohou být komprimovány a dekomprimovány
také tak. Výsledné výstupy jsou postupně naskládány do standardního
výstupu (stdout). Komprese hromadných souborů tímto způsobem vytváří
proud obsahující hromadné komprimované soubory. Takový proud může být
správně dekomprimován pouze bzip2 version 0.9.0 nebo vyšší. Nižší
verze bzip2 se zastaví po dekomprimování prvního souboru v proudu.
bzcat (or bzip2 -dc) dekomprimuje všechny uvedené soubory do
standardního výstupu.
bzip2 přečte argumenty z proměnných prostředí BZIP2 a BZIP, v tomto
pořadí, a zpracuje je ještě před načtením argumentů z příkazové řádky.
Tímto způsobem mohou být nastaveny obecné(defaultní) argumenty.
Komprese je vždy provedena, dokonce i tehdy, je-li získaný komprimovaný
soubor nepatrně větší než původní. U souborů menších než zhruba sto
bajtů je sklon ke zvětšení, neboť komprimační mechanismus má stálou
režii kolem 50 bajtů. Náhodná data (uvažován výstup většiny souborových
kompresorů) jsou kódována v 8.05 bitech na bajt při rozpětí kolem 0.5%.
Jako sebekontrolní mechanismus bzip2 užívá 32-bit CRC k ověření
identity dekomprimované verze s originálem. To chrání proti deformaci
komprimovaných dat a proti nerozeznaných chybám v bzip2 (doufejme, že
velmi nepravděpodobných). Možnost nerozpoznaného poškození dat je
nepatrná, v poměru 1 ku čtyřem biliónům na každý zpracovaný soubor.
Uvědomme si však, že kontrola při dekompresi může pouze oznámit, že je
něco špatně. Nemůže pomoci získat původní nekomprimovaná data. Pokud se
chcete pokusit získat z poškozených souborů data, použijte program
bzip2recover.
Návratové hodnoty: 0 správný konec, 1 problémy prostředí (soubor nebyl
nalezen, špatné volby, I/O (vstupně/výstupní) chyby), 2 označuje
porušení komprimovaného souboru, 3 vnitřní logickou chybu (tj. bug),
jenž způsobila pád bzip2.
VOLBY
-c --stdout
Komprimuje nebo dekomprimuje do standardního výstupu
-d --decompress
Vyvolá dekompresi. bzip2, bunzip2 and bzcat jsou ve skutečnosti
stejné programy a rozhodnutí jaké činnosti budou provedeny
závisí na užitém jménu. Avšak volba parametrem převyšuje nad
tímto mechanismem a vyvolá bzip2 pro dekompresi.
-z --compress
Protiklad k -d. Způsobí kompresi bez ohledu na volané jméno.
-t --test
Kontroluje celistvost uvedeného souboru, ale nedekomprimuje jej.
Ve skutečnosti provádí zkušební dekompresi a zahodí výsledek.
-f --force
Přepíše výstupní soubory. Normálně bzip2 nepřepisuje existující
výstupní soubory. Také bzip2 přeruší pevné odkazy k souborům,
což by jinak neprovedl.
bzip2 normálně odmítne dekomprimovat soubory, jimž nesedí
"magická hlavička". Při volbě -f (--force) bzip2 dekomprimuje i
tyto soubory, čímž napodobuje chování GNU gzip.
-k --keep
Zachová (nemaže) vstupní soubory během komprese nebo dekomprese.
-s --small
Omezí velikost použité paměti pro kompresi, dekompresi i
testování. Při dekompresi a testování je užíván upravený
algoritmus, jenž vyžaduje pouze 2.5 bajtů pro blok. To znamená,
že jakýkoliv soubor může být dekomprimován pouze s 2300kB
dostupné paměti, avšak poloviční rychlostí.
Během komprese, znak -s vybere velikost bloku 200kB, čímž
příslušně omezí velikost užité paměti za cenu nižšího
kompresního poměru. Tedy, má-li váš počítač 8MB či méně operační
paměti užijte volbu -s. Čtete ŘÍZENÍ PAMĚTI dále.
-q --quiet
Potlačí nepodstatná varování. Zprávy týkající se I/O chyb a
jiných kritických událostí nebudou potlačeny.
-v --verbose
Upovídaná volba -- ukazuje pro každý zpracovaný soubor kompresní
poměr. Dále volba -v zvyšuje výmluvnost, chrlí množství
informací, které jsou zajímavé zejména pro diagnostické účely.
-L --license -V --version
Zobrazí verzi, licenční podmínky.
-1 (či --fast) až -9 (či --best)
Nastaví velikost bloku na 100kB, 200kB .. 900kB pro komprimaci.
Nemá žádný vliv na dekomprimaci. Čti ŘÍZENÍ PAMĚTI dále. Volby
--fast a --best jsou podporovány z důvodu kompatability s GNU
gzip. Popravdě, --fast toho moc neurychlí. A --best pouze zvolí
defaultní chování.
-- Považuje všechny následující argumenty za souborová jména, i
pokud začínají pomlčkou. Takže můžete zacházet také se soubory s
pomlčkou například bzip2 -- -méskvělévyspekulovanéjménosouboru.
--repetitive-fast --repetitive-best
Tato volba je zbytečná ve verzi 0.9.5 a vyšších. Poskytovala
určité surové ovládání chování třídícího algoritmu v předchozích
verzích a byla v lecčem užitečná. Verze 0.9.5 a vyšší mají
zdokonalený algoritmus, který činí tuto volbu bezvýznamnou.
ŘÍZENÍ PAMĚTI
bzip2 komprimuje velké soubory v blocích. Velikost bloku má vliv jednak
na dosažený kompresní poměr a také na množství potřebné paměti pro
kompresi a dekompresi. Volby -1 až -9 určují velikost bloku od 100kB do
900KB (standard). Při dekompresi je velikost bloku, užitá pro kompresi,
načtena z hlavičky zkomprimovaného souboru a bunzip2 již sám vyhradí
dostatek paměti pro dekompresi. Protože velikost bloku je uložena ve
zkomprimovaném souboru, volby -1 až -9 jsou zbytečné a proto při
dekompresi zůstanou nepovšimnuty.
Kompresní a dekompresní paměťové požadavky v bajtech mohou být
odhadnuty takto:
Komprese: 400k + (8 x velikost bloku)
Dekomprese: 100k + (4 x velikost bloku) nebo
100k + (2.5 x velikost bloku)
Větší bloky nepřinášejí přiměřený nárůst komprese, neboť většina
komprese je vytvořena v prvních dvou či třech stech tisících bajtů
bloku (což těší mysl uživatele malých strojů). Je také důležité si
uvědomit, že dekompresní paměťové požadavky jsou nastaveny v době
komprese výběrem velikosti bloku.
Pro soubor komprimovaný s přednastavenou velikostí bloku 900kB bunzip2
vyžaduje při dekompresi 3700kB paměti. Pro umožnění dekomprimování
libovolného souboru na počítači s pouze 4MB operační paměti má bunzip2
volbu pro dekompresi užívající přibližně poloviční množství paměti,
kolem 2300kB. Rychlost je také snížena na polovinu, proto byste tuto
možnost měli užít pouze, je-li to opravdu nutné. Odpovídající volba je
-s.
Obecně řečeno, zkuste a užijte největší možnou velikost bloku v zájmu
dosažení maximální komprese. Rychlost komprese a dekomprese prakticky
není velikostí bloku ovlivněna.
Dále se podíváme na uplatnění bzip2 na soubory, které se vejdou do
jednoho bloku. To je většina souborů, se kterými se setkáte, pokud
použijete velkou blokovou velikost. Množství skutečně užité paměti je
přiměřená velikosti takového souboru, protože soubor je menší než blok.
Například příkaz komprimace souboru velkého 20kB s volbou -9 způsobí,
že kompresor přidělí asi 7600kB paměti, ale použije pouze 400k + (20000
* 8) = 560kB. Podobně dekompresor přidělí 3700kB ale použije pouze
100kB + (2000 * 4) = 180KB.
Následuje tabulka sestávající z hodnot maximálního užití paměti pro
různé velikosti bloku. Obsahuje také výslednou komprimovanou velikost
balíku 14 souborů Calgary Text Compression Corpus mající původní
celkovou velikost 3,141,622 bajtů. Tento údaj dovolí nahlédnout vlivu
velikosti bloku na kompresi. Tabulka směřuje k výkladu výhod užití
větších bloků pro větší soubory.
Komprese Dekomprese Dekomprese Corpus
volba paměť paměť -s paměť 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
ZÍSKÁNÍ DAT Z POŠKOZENÝCH SOUBORŮ
bzip2 komprimuje soubory v blocích, obyčejně 900kB velkých. S každých
blokem je nakládáno nezávisle. Jestliže chyba záznamu či přenosu se
projeví v některém z bloků, .bz2 soubor je poškozen, ale přesto je
možné získat data z nepoškozených bloků data.
Komprimované prohlášení každého bloku je vymezeno 48-bit předlohou,
která umožňuje nalezení hranic bloku s přijatelnou přesností. Každý
blok také uchovává vlastní 32-bit CRC a tak poškozené bloky mohou být
rozlišeny od nepoškozených.
bzip2recover je jednoduchý program, jehož úlohou je hledat bloky v .bz2
souborech a zapisovat každý blok do vlastního souboru .bz2
Můžete užít bzip2 -t , jenž ověřuje spojitost výsledných souborů a
dekomprimuje nepoškozené bez zápisu výstupu.
bzip2recover
vyžaduje jednoduše jméno poškozeného souboru a vytváří číslované
soubory "rec0001soubor.bz2", "rec002soubor.bz2" atd., obsahující
rozbalené bloky. Pojmenování výstupních souborů je navrženo tak, aby
použití žolíkových znaků způsobilo správnou sestavu souborů. Např.
"bzip2 -dc rec*file.bz2 > získaná_data".
Použití bzip2recover je spojeno s velkými .bz2 soubory, právě takové
obsahují mnoho bloků. Je zřejmě marné pokoušet se zachránit
jednoblokový poškozený soubor, neboť samotný poškozený blok nemůže být
obnoven. Jestliže usilujete o zmenšení rizika ztráty dat zapříčiněnou
chybou média či přenosu, uvažujte o kompresi s malou velikostí bloku.
POZNÁMKA K VÝKONU
Třídící část komprese shromažďuje podobné řetězce v souboru. Z toho
důvodu může být mnohem pomalejší komprimace souboru, obsahujícího velmi
dlouhé nudle opakujících se znaků, např. "aabaabaabaab ... ", než je
obvyklé. Verze 0.9.5 a vyšší toto mnohem lépe tráví nežli předchozí
verze. Poměr mezi nejhorším a průměrných časem komprese je kolem 10:1.
Předchozí verze statečně dosahovaly poměru 100:1. Pokud zadáte volbu
-vvvv, můžete sledovat průběh v detailu. Dekompresní rychlost tím není
ovlivněna.
bzip2 obvykle obsadí několik megabajtů paměti a pak je vyplňuje doslova
náhodně rozmařilým způsobem. To znamená, že výkon komprese i dekomprese
je silně ovlivněn rychlostí obsluhy cache. Proto malé změny v kódu
přístupu cache by měly způsobit nepoměrně velké zlepšení výkonu. Výkon
bzip2 bude pravděpodobně nejlepší na strojích s velmi velkými cache.
VAROVÁNÍ
I/O chybové zprávy nejsou tak užitečné, jak by mohly být. bzip2 se
pilně pokouší rozeznat I/O chyby a slušně ukončit činnost, ale detailní
zprávy o problému jsou občas poněkud matoucí.
Tato příručka náleží k verzi 1.0.3 bzip2. Komprimovaná data vytvořená
touto verzí jsou zcela oboustranně slučitelná s předcházejícími
veřejnými vydáními, verzemi 0.1pl2, 0.9.0 a 0.9.5. Ovšem s následující
výjimkou: 0.9.0 a vyšší umí správně dekomprimovat zřetězené
komprimované soubory. 0.1pl2 to neumí, a zastaví se po dokončení
dekomprese prvního souboru v proudu.
bzip2recover verze starší než 1.0.2 používaly 32-bitovou reprezentaci
pozice v komprimovaném souboru, a proto se nevypořádaly se soubory
většími než 512 MB. Verze 1.0.2 a novější používají 64-bitovou
reprezentaci pozice na systémech, kde je to podporováno (GNU systémy a
Windows). Pro zjitění, zda byl bzip2recover skompilován s tímto
omezením, spusťte ho bez parametrů. Kdekoliv si můžete skompilovat
verzi bez tohoto omezení, pokud nastavíte MaybeUInt64 na nějaký typ
odpovídající unsigned 64-bit integer.
AUTOR
Julian Seward, jseward@acm.org.
http://www.bzip.org
Myšlenky vložené do bzip2 pocházejí od následujících lidí: Michael
Burrows a David Wheeler (bloky řadící přeměna), David Wheeler (opět,
Huffmanovo kodóvání), Peter Fenwick (strukturovaný model kódování v
původním bzip, a řada zdokonalení), Alistair Moffat, Radford Neal a Ian
Witten (aritmetické kódovaní v původním bzip). Mnoho jim vděčím za
jejich pomoc, podporu a rady. Pro odkazy na zdrojovou dokumentaci se
podívejte do příručky v balíčku zdrojového kódu. Christian von Roques
mě přivedl k hledání rychlejšího třídícího algoritmu, to pro zvýšení
rychlosti komprese. Bela Lubkin mě podpořil při zdokonalení toho
nejhoršího případu kompresního výkonu. Skripty bz* jsou odvozeny od GNU
gzip. Mnoho lidí poslalo záplaty, pomohlo s problémy v přenositelnosti,
půjčilo stroje, dalo rady a byli obecně nápomocni.
bzip2(1)