bzip2, bunzip2 - komprimuje a dekomprimuje soubory, používá
metodu blokového třídění, v1.0.8
bzcat - dekomprimuje soubory do standardního výstupu (stdout)
bzip2recover - získává data z poškozených
bzip2 souborů
bzip2 [
-cdfkqstvzVL123456789 ] [
soubory ... ]
bzip2 [
-h|--help ]
bunzip2 [
-fkvsVL ] [
soubory ... ]
bunzip2 [
-h|--help ]
bzcat [
-s ] [
soubory ... ]
bzcat [
-h|--help ]
bzip2recover soubor
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 přejde na soubor
soubor.tbz2 přejde na soubor.tar
soubor.tbz přejde na 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.
- -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 2300 kB dostupné
paměti, avšak poloviční rychlostí.
Během komprese, znak -s vybere velikost bloku 200 kB,
čí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.
- -h --help
- Print a help message and exit.
- -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.
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: 400 k + (8 x velikost bloku)
Dekomprese: 100 k + (4 x velikost bloku) nebo
100 k + (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
900 kB
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
7600 kB paměti, ale použije pouze 400 k + (20000 *
8) = 560kB. Podobně dekompresor přidělí
3700 kB ale použije pouze 100 kB + (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 Velikost
volba paměť paměť -s paměť 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
bzip2 komprimuje soubory v blocích, obyčejně
900 kB 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.
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.
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í.
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 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.
Julian Seward,
[email protected].
https://sourceware.org/bzip2/
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.
Překlad této příručky do
španělštiny vytvořili Karel Dušek
<
[email protected]> a Petr Sykora
<
[email protected]>
Tento překlad je bezplatná dokumentace;
Přečtěte si
GNU
General Public License Version 3 nebo novější
ohledně podmínek autorských práv. Neexistuje
ŽÁDNÁ ODPOVĚDNOST.
Pokud narazíte na nějaké chyby v překladu
této příručky, pošlete e-mail na adresu
[email protected]