Unixová komprese v praxi: Tar

Petr Krčmář 7. 4. 2003

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.

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 :-).

Našli jste v článku chybu?
Vitalia.cz: Očkování je nutné, říká homeopatka

Očkování je nutné, říká homeopatka

Měšec.cz: Platíme NFC mobilem. Konečně to funguje!

Platíme NFC mobilem. Konečně to funguje!

Lupa.cz: Olympiáda zakázala GIFy. Moc to nepomáhá

Olympiáda zakázala GIFy. Moc to nepomáhá

Vitalia.cz: Za její cukrovkou stojí rodiče

Za její cukrovkou stojí rodiče

Měšec.cz: Co s reklamací, když e-shop krachuje?

Co s reklamací, když e-shop krachuje?

Lupa.cz: Měřičům síly hesla se nedá věřit. Víte proč?

Měřičům síly hesla se nedá věřit. Víte proč?

Podnikatel.cz: Pozor na vykuky, imitují služby České pošty

Pozor na vykuky, imitují služby České pošty

Vitalia.cz: Ženy, které milují příliš, jsou neštěstí

Ženy, které milují příliš, jsou neštěstí

Měšec.cz: Co když na dovolené přijdete o kartu?

Co když na dovolené přijdete o kartu?

Vitalia.cz: Vakcína Cervarix je oficiálně i pro chlapce

Vakcína Cervarix je oficiálně i pro chlapce

Root.cz: Xiaomi má vlastní notebook podobný Macu

Xiaomi má vlastní notebook podobný Macu

DigiZone.cz: ČTÚ červenec: rušení trochu vzrostlo

ČTÚ červenec: rušení trochu vzrostlo

DigiZone.cz: Jetelín končí. Prima ho vyřadila

Jetelín končí. Prima ho vyřadila

120na80.cz: Lepší poporodní sexuální život? Žádný problém

Lepší poporodní sexuální život? Žádný problém

Lupa.cz: Samořídicí taxíky jsou tu. Začíná s nimi Uber

Samořídicí taxíky jsou tu. Začíná s nimi Uber

Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte

Měšec.cz: Na návštěvě na exekutorském úřadě

Na návštěvě na exekutorském úřadě

Vitalia.cz: 9 potravin, které nesmí chybět v jídelníčku těhotné

9 potravin, které nesmí chybět v jídelníčku těhotné

Lupa.cz: Elektronika tajemství zbavená. Jak s ní začít?

Elektronika tajemství zbavená. Jak s ní začít?

DigiZone.cz: AXN u FreeSatu měsíc zdarma

AXN u FreeSatu měsíc zdarma