Hlavní navigace

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?

28. 4. 2010 10:52

Zootv (neregistrovaný)

Dobrý den,

také bych uvítal, kdyby byl popis taru podrobnější např. rozbalení do jiného adresáře než aktuálního.

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat