IT blok - Michal Šika

kutilovo živobytí

Použití programu tar v 10ti příkladech

Na Unix/Linux platformě je program tar základním archivačním nástrojem a zároveň jedním ze základních programů, nacházejících se v každé distribuci. Tento článek nám pomůže porozumět různým volbám a způsobům využití programu tar a tím zvládnout práci s archivy na této platformě.

V tomto článku si popíšeme na několika příkladech, jak vytvořit tar archivy (s gzip nebo bzip kompresí), jak extrahovat soubor nebo adresář. Dále si ukážeme, jak prohlížet obsah tar archivu, jak ověřit integritu tar archivů, jak najít rozdíly mezi tar archivy atd.

1. Vytvoření archivu pomocí programu tar

Vytvoření dekomprimovaného tar archivu
Toto je základní příkaz k vytvoření archivu.

$ tar cvf jmeno_archivu.tar adresar/

Popis voleb příkazu:

  • c – vytvoří nový archiv
  • v – při zpracování vypisuje seznam souborů
  • f – následuje jméno archiv souboru

Vytvoření tar archivu komprimovaného pomocí programu gzip
V předchozím příkazu použité nastavení cvf neprovede žádnou kompresi archivovaných souborů. Pro použití programu gzip je nutné přidat do nastavení další parametr.

$ tar cvzf jmeno_archivu.tar.gz adresar/

Popis voleb příkazu:

  • z – při archivování použij gzip

Poznámka: .tgz je totéž jako .tar.gz

Vytvoření tar archivu komprimovaného pomocí programu bzip
Pro vytvoření bzip2 archivu postupujte následovně.

$ tar cvfj jmeno_archivu.tar.bz2 adresar/

Popis voleb příkazu:

  • j – při archivování použij gzip

gzip x bzip2: bzip2 komprimuje a dekomprimuje soubory delší dobu než gzip. Velikost souborů archivovaných bzip2 je menší než při použití gzip.

Poznámka: .tbz a .tb2 je totéž jako .tar.bz2

2. Extrahování archivu pomocí programu tar

Rozbalení *.tar souboru
Pro rozbalení tar souboru použijeme nastavení x, jak je ukázáno níže.

$ tar xvf jmeno_archivu.tar

Popis nastavení příkazu:

  • x – rozbalí (extrahuje) soubory z archivu

Rozbalení gzipovaného tar archivu (*.tar.gz)
Pro rozbalení tar archivu, který je komprimovaný pomocí gzip, použijeme následující příkaz.

$ tar xvfz jmeno_archivu.tar.gz

Rozbalení bzipovaného tar archivu (*.tar.bz2)
Pro rozbalení tar archivu, který je komprimovaný pomocí bzip2, použijeme následující příkaz.

$ tar xvfj jmeno_archivu.tar.bz2

3. Výpis archivu pomocí programu tar

Zobrazení obsahu tar archivu bez jeho rozbalování
Pomocí tar příkazu si můžeme zobrazit obsah *.tar souboru, aniž bychom provedli jeho rozbalení.

$ tar tvf jmeno_archivu.tar

Zobrazení obsahu *.tar.gz archivu bez jeho rozbalení
Níže je příklad, jak zobrazit obsah *.tar.gz souboru bez jeho rozbalení.

$ tar tvfz jmeno_archivu.tar.gz

Zobrazení obsahu *.tar.bz2 archivu bez jeho rozbalení
Níže je příklad, jak zobrazit obsah *.tar.bz2 souboru bez jeho rozbalení.

$ tar tvfj jmeno_archivu.tar.bz2

4. Zobrazení obsahu archivu v příkazu less

Pokud je počet archivovaných souborů veliký, je možné nasměrovat výstup zobrazovacího příkazu do programu less.

5. Extrahování jediného souboru z tar, tar.gz a tar.bz2 archivu

Pro extrahování určitého souboru z tar archivu, je nutné určit jméno souboru na konci rozbalovacího příkazu, jak je ukázáno níže.
Následující příkaz extrahuje pouze určitý soubor z velkého tar archivu.

$ tar xvf jmeno_archivu.tar /cesta/k/souboru/jmeno

Totéž lze použít i v případě archivů kompresovaných pomocí gzip a bzip2.

$ tar xvfz jmeno_archivu.tar.gz /cesta/k/souboru/jmeno
$ tar xvfj jmeno_archivu.tar.bz2 /cesta/k/souboru/jmeno

6. Extrahování jediného adresáře z tar, tar.gz a tar.bz2 archivu

Pro extrahování samotného adresáře (společně s jeho podadresáři a soubory) z velikého tar archivu, je nutné určit jméno tohoto adresáře na konci rozbalovacího příkazu, jak je ukázáno níže.
Následující příkaz extrahuje pouze určitý adresář.

$ tar xvf jmeno_archivu.tar /cesta/k/adresari

Pro extrahování více adresářů vypadá příkaz následovně.

$ tar xvf jmeno_archivu.tar /cesta/k/adresari1 /cesta/k/adresari2

Totéž lze použít i u archivů kompresovaných pomocí gzip a bzip2.

$ tar xvfz jmeno_archivu.tar.gz /cesta/k/adresari
$ tar xvfj jmeno_archivu.tar.bz2 /cesta/k/adresari

7. Extrahování skupiny souborů z tar, tar.gz a tar.bz2 archivu pomocí regulárního výrazu

Můžeme použít regulární výraz pro extrahování souborů, které vyhovují určité šabloně.
V následujícím příkazu, budou extrahovány soubory s koncovkou py.

$ tar xvf jmeno_archivu.tar --wildcards '*.py'

Popis voleb příkazu:

  • -wildcards *.py – soubory s příponou py

8. Přidání souboru nebo adresáře do existujícího archivu

Do existujícího archivu můžeme přidat další soubory nebo adresáře. Pro přidání dalšího souboru do existujícího *.tar archivu slouží následující příkaz.

$ tar rvf jmeno_archivu.tar novy_soubor

Totéž v případě nového adresáře.

$ tar rvf jmeno_archivu.tar /novy_adresar

Poznámka: Není možné přidat soubor nebo adresář do archivu, který je kompresovaný pomocí gzip nebo bzip2.

9. Ověření dostupnosti souborů v tar

Jako součást vytváření tar souboru můžeme přiřadit ověření archivovaných souborů, a to přidáním volby W, jak je ukázáno níže.

$ tar cvfW jmeno_souboru.tar /adresar

Pokud plánujeme odebrání adresáře/souboru z archivního souboru nebo z filesystému, měli bychom chtít ověřit archivní soubor před provedením požadavku, jak je ukázáno níže.

$ tar tvfW jmeno_archivu.tar
Verify 1/file1
1/file1: Mod time differs
1/file1: Size differs
Verify 1/file2
Verify 1/file3

Pokud výstup začíná slovem Verify a nejsou zde žádné rozdíly, je soubor/adresář OK. Pokud ne, měli bychom hledat řešení.
Poznámka: Pro soubory kompresované pomocí gzip nebo bzip2 není možné provést ověřování.

Hledání rozdílů mezi archivem a filesystémem lze provádět i pro komprimované archivy. Následující příklady ukáží stejný výstup jako příklad výše, kromě řádek slovem Verify.

Vyhledání rozdílů mezi archivem komprimovaným pomocí gzip a filesystémem.

$ tar dfz jmeno_souboru.tgz

Vyhledání rozdílů mezi archivem komprimovaným pomocí bzip2 a filesystémem.

$ tar dfj jmeno_souboru.tar.bz2

10. Odhad velikost tar archivu

Následující příkaz odhadne velikost tar souboru (v kilobajtech), před tím, než soubor vytvoříme.

$ tar -cf - /adresar/k/archivaci/ | wc -c
22778

Následující příkaz odhadne velikost komprimovaného tar souboru (v kilobajtech), před jeho vytvořením za použití gzip a bzip2.

$ tar -czf - /adresar/k/archivaci/ | wc -c
868

$ tar -cjf - /adresar/k/archivaci/ | wc -c
543
Michal Šika