Unixová komprese v praxi: Tar

7. 4. 2003
Doba čtení: 4 minuty

Sdílet

Ilustrační obrázek
Autor: Depositphotos – stori
Ilustrační obrázek
Po delší pauze, kterou zapříčinila angína, se dostáváme k další části našeho seriálu o unixové kompresi, kterou věnujeme programu tar.

Pravdou je, že tar vlastně taky ještě nekomprimuje (někteří z vás už si možná říkají: „Tož kurnik je to o kompresi, nebo ne ?“), ale protože s použitím „těch opravdových“ kompresních programů dost souvisí, nemůžu jinak, než se o něm taky zmínit.

Tar s největší pravděpodobností najdete ve všech distribucích, na které si vzpomenete. Patří k základnímu unixovskému software, který nesmí chybět.

Název tar je zkratka slov tape archiver. Přesný překlad by zněl nějak jako „páskový zálohovač“ (angličtina je někdy pekelná). Tar vznikl z potřeby jednoduše zapisovat data na pásku (streamer). Protože pásková jednotka je zařízení, které může dávat data pouze proudově (tak, jak jdou na pásce za sebou), nelze na ní vytvořít klasický souborový systém a přistupovat k ní jako k disketě (motor by se utočil a stejně by to moc nefungovalo). Nejjednodušší způsob, jak na pásku zálohovat soubor, je prosté

cat muj_soubor_co_chci_zalohovat > /dev/tape

kde /dev/tape je pochopitelně link na páskovou jednotku. Stejně tak zpětně můžeme tento soubor z pásky dostat na disk (dá se to provádět i s disketou, můžete si to zkusit, ale přijdete o data na ní). To je sice všechno pěkné, ale co když potřebujeme archivovat více než jeden soubor (což je ostatně skoro pořád)? A právě k tomu vznikl tar.

Tar umí sloučit několik souborů, včetně adresářové struktury, práv a dalších nezbytných informací, do jednoho velkého. Ten je velký stejně jako jednotlivá data v něm, plus nějaká ta režie (samotné názvy souborů taky něco zaberou), která je ovšem naprosto zanedbatelná. Samotné „zatarování“, jak se procesu vytvoření archivu u nás říká, provedeme jednoduše:

tar -cf archiv.tar /nejaka_cesta/*

Tím nám v aktuálním adresáři vznikne soubor archiv.tar. Parametry se dají zapamatovat poměrně jednoduše: c znamená create (vytvoř) a f znamená file (název souboru). „Roztarování“ se dělá velmi podobně:

tar -xf archiv.tar

a na disku máme rozbalené naše soubory.

No jo, ale jak to souvisí s tou kompresí? Úplně jasně a velmi úzce. Jednou ze základních filosofických pouček Unixu je: „Programy dělají jenom jednu věc, ale zato pořádně.“, a proto si unixové kompresní programy rozdělily úkoly. Tar jenom spojuje soubory do jednoho balíku, ale komprese ho nezajímá, a ostatní (gzip, bzip2, compress a další) zase jenom komprimují soubory a o nějaké spojování souborů se nestarají, to je pod jejich úroveň. Jejich úkolem je jenom komprimovat proud dat na vstupu a hotový produkt dávat na svůj výstup. To, že jsou v proudu nějaké soubory, je vlastně vůbec nezajímá.

Unix obsahuje jednu užitečnou věc, a tou jsou roury. Pro ty, kteří nevědí, o co se jedná: Jedná se o jednoduchý způsob, jak výstupní data z jednoho programu rovnou předávat dalšímu, jeho výstupní pak třeba dalšímu a tak dál a nakonec je třeba uložíme do souboru. Jako obecný příklad použití taru s nějakým kompresním programem si můžeme uvést třeba tohle:

tar -c cesta_k_datum | nejaky_kompresni_program
 > komprimovany_soubor

Jaký kompresní program můžeme použít, to si řekneme v dalších dílech seriálu, kde si i jednotlivé programy popíšeme a trochu otestujeme. Je dobrým zvykem dávat komprimovaným souborům příponu podle programu, kterými jsme je vytvořili, a to tak, že přípony jakoby postupně přidáváme za sebe. Malý příklad: Soubor s tímto článkem se jmenuje komprese2.txt a já ho pošlu do redakce komprimovaný gzipem. Pak se bude jmenovat komprese2.txt.gzip. Kdybych vytvářel tarem archiv, který bych pak ještě zkomprimoval gzipem, jmenoval by se archiv.tar.gzip, někdy se také zkráceně píše archiv.tgz. Často se takovému souboru říká „tarball“. Každý, kdo takový soubor vidí, pak už podle názvu pozná, jak a čím je soubor komprimován a co má dělat pro to, aby jej dekomprimoval.

Protože už tar a jeho kolegové „kompresoři“ existují nějaký ten pátek, autoři taru do něj zakomponovali i podporu pro nejpoužívanější kompresní programy. Proto stačí například mezi parametry -cf vložit ještě parametr z a vytvářený archiv se rovnou zkomprimuje gzipem. Totéž platí při dekompresi. Jde vlastně jenom o pohodlí a zmenšení počtu znaků na příkazové řádce. Jestli použijete tar -czf, nebo spojíte jednotlivé programy do roury, je úplně jedno. Záleží spíš na tom, co vám vyhovuje.

bitcoin_smenarna

Tar umí ještě spoustu věcí, o kterých jsem se nezmínil. Kompletní seznam parametrů najdete jako vždy na manuálové stránce a spoustu informací můžete objevit taky na webu.

V příštím díle už se budeme opravdu věnovat prvnímu kompresnímu programu (Slibuju :-).

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.