ADE: Tar 1.11.8, Gzip 1.2.4

Jan Skýpala

Standardním archiverem na Amize je Lha, pozornosti se těší i Lzx. Chcete-li si však přenést nějaké soubory jinam (např. na nějaký Unix), může se vám snadno stát, že tam Lha nebude. Na všechny platformy (včetně Amigy) jsou ale naportovány programy Tar a Gzip, které jsou na dnešních Unixech standardem. Pojďme se v rámci pokračování seriálu o programech z ADE distribuce podívat právě na tyto dva.

Tar
Základním archiverem na Unixu je ar. Tato utilitka je však už zastaralá a používá se pouze pro balení objektů do linkovaných knihoven (to je ovšem samo o sobě velmi zajímavý nápad). Jako běžný archivační program se prosadil jeho nástupce tar.
První zajímavostí na taru je, že pracuje sekvenčně. Běžné Amigácké archivery se v souborech pohybují tam a zase zpět, tar daný bajt po přečtení už nikdy nebude potřebovat. Tato vlastnost se může zdát zanedbatelná, většinu uživatelů nenapadne žádná výhoda tohoto přístupu. Jedna velká výhoda však existuje: vzhledem k tomu, že tar umí číst nejen soubory, ale i různá zařízení (včetně standardního vstupu), lze ho napojit před nebo za nějaký program do roury. Tak lze například již při balení zajistit, aby na disk byly ukládány soubory o velikostí dostupného místa na disketě výstup taru se přes PIPE pošle prográmku split.
Další velice užitečnou vlastnosti taru je rozpoznání symbolických linků. Link je zástupce za jiný soubor na disku - pro uživatele to vypadá, jako kdyby daný soubor byl na disku dvakrát (nebo ještě vícekrát), ale on je tam jenom jednou. To může být někdy velice vhodné např. 2 různé programy mohou hledat týž soubor v různých adresářích. Jiné typické použití je vytvoření si linků se jmény většiny textových prohlížečů (more, ppmore, less) ukazující na váš oblíbený prohlížeč (most). Když je pak tento soubor změněn, projeví se to samozřejmě ve všech jeho „kopiích“. Symbolický link je řešen tak, že v souboru je uloženo, jaký soubor se má místo tohoto souboru použít. Link samozřejmě nemusí být jen soubor, ale i adresář.
Když Tar narazí na symbolický link, do archivu běžně neuloží obsah souboru, na který link ukazuje (to lze ovšem zapnout), ale obsah linku - tedy právě jméno souboru, na který má link ukazovat. V případě, že linky používáte (a šetříte si tak místo na disku), archivy mohou být znatelně kratší.
Tar sám o sobě neumí žádnou kompresi - výsledný archiv je tak dlouhý, jak jsou vstupující soubory plus několik informací o jménech souborů apod. Archiv se běžně komprimuje posléze a to nejčastěji Gzipem (archiv pak má příponu .tar.gz, případně .tgz), případně compressem (.tar.Z, .taz) či zipem (tar.zip).
Dokumentace k turu je pochopitelně v angličtině a někteří se v ní možná nevyznáte a mohli byste mít s tarem zpočátku problémy já jsem měl), proto následuje popis toho nejdůležitějšího:
Syntaxe je: tar parametry [archiv] [soubory]
parametry:
c - vytvořit archiv
a - přidat do archivu
x - rozbalit archiv
t - vypsat obsah archivu
z - archiv je komprimovaný (tar zajistí spuštění Gzipu)
f - za parametry následuje jméno souboru-archivu (jinak bude použit standardní vstup/výstup!!!)
v - vypisovat, co se děje (jinak tar pracuje „tiše“)
příklady: sbalení: tar zcvf archiv.tar.gz
rozbalení tar zxvf archiv.tar.gz

Gzip
Gzip je v současnosti standardem pro kompresi souborů na Unixu. Kromě něj určitě na každém Unixu najdete základní komprimační program compress (přidává příponu .z). Gzip slouží pro sbalení nebo rozbalení jednoho souboru. Komprese je založena na Lempel-Ziv algoritmu (LZ77). Při běžném použití je při kompresi původní soubor nahrazen sbaleným souborem, který bude mít příponu .gz a naopak, při rozbalení je soubor s příponou .gz nahrazen rozbaleným souborem. Gzip umí také rozbalit soubory sbalené programy compress, zip a pack.
Gzip umí stejně jako Tar pracovat se standardním vstupem a výstupem, takže je možné ho přes rouru zapojit jako filtr. GNU Tar umí volat gzip sám (parametr -z), běžné fary to však neumí, právě u nich se pak využívalo rour při archivaci a dearchivaci:
far cv * | gzip >archiv.tar.gz
gzip -d <archiv.tar.gz | tar xv
Chcete-li, aby Gzip vždy použil některé parametry, je možné je uložit do systémové proměnné ENV. Takovým vhodným parametrem může být -N, který při dekompresí zajistí, že nový soubor bude mít svůj původní název, tj. takový, jak se soubor jmenoval při kompresi.

Porovnání
Určitě mnoho lidi bude zajímat porovnání Taru s Gzipem vůči Lha a Lzx. Provedl jsem test, při kterém jsem sbalil do archivu svou instalaci GoldEDu - 824 souborů o délce 4483061 bajtů. Test proběhl na A1200 s 68030/50MHz a 16MB Fast RAM. Výsledky jsou uvedeny v tabulce.

Lha
Lha je způsob archivace, při němž jsem nejdříve soubory sbalil do Lha archivu s vypnutou kompresí (parametr -z) a potom celý archiv nechal znovu přebalit Lhačkem, tentokrát s kompresí zapnutou. Z tabulky je vidět, že Tar s Gzipem jsou v každém případě nejpomalejší (přece jen to jsou obecně napsané programy a není v nich nic optimalizovaného pro AmigaOS), archiv sbalený pomocí Lha je delší, avšak pomocí Lzx je kratší než při použití Taru s Gzipem. Nastavení nejvyšší možné komprese pro Gzip přineslo minimální úspory při téměř dvojnásobném čase potřebném pro kompresi.

Závěr
Tar s Gzipem jsou vzhledem ke své rychlosti a velikostí výsledných archivů vhodné především tehdy, když chcete nějaký svůj archiv přenést na Unix, případně naopak. Symbolické linky se na Amize až tak příliš nepoužívají a normální amigácký Shell roury nepodporuje. Třeba bude situace jiná na nástupci Amigy, ale to se teprve uvidí.
Oba dva programy jsou k nalezení na URL:
fpt.grolier.rf/pub/amiga/current/amiga-bin/

  Délka archivu Čas archivace Čas dearchivace
Lha 2197095 2 min 27 s 58 s
Lha.Lha 2058189 2 min 55 s 1 min 21 s
Lzx 1845091 2 min 1 min 2 s
Lzx -3 1837789 2 min 13 s 1 min 2 s
Tar.Gzip 1974583 3 min 8 s 1 min 39 s
Tar.Gzip -9 1963980 5 min 40 s 1 min 40 s

 

Tar, Gzip

Hodnocení: 8,0 z 10
Autor: FSF
Cena: -
Typ: freeware

+

přenositelnost archivu

-

symbolické linky, sekvenční zpracování, rychlost


Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.

Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing