Úvod
GNU tar
(zkratka pro T opice AR chiver) je nejrozšířenější archivační nástroj v systémech Linux. K dispozici přímo v terminálu, tar
pomáhá vytvářet, extrahovat a vypisovat obsah archivu.
Nástroj je jednoduchý a má mnoho užitečných možností pro kompresi souborů, správu záloh nebo extrahování nezpracované instalace.
Tento výukový program ukazuje, jak používat příkaz tar prostřednictvím příkladů a dostupných možností.
Předpoklady
- Systém se systémem Linux.
- Přístup k příkazovému řádku/terminálu.
- Soubor nebo soubory pro testování příkazu.
Syntaxe příkazu Tar
tar
Obecná syntaxe příkazu je:
tar <operation mode> <option(s)> <archive> <file(s) or location(s)>
- Provozní režim označuje, která operace se se soubory provádí (vytvoření, extrakce atd.). Příkaz umožňuje a vyžaduje pouze jednu operaci.
- Možnosti upravovat provozní režim a nejsou nutné. Počet možností není omezen.
- archiv je název a přípona souboru.
- názvy souborů je seznam oddělený mezerami pro extrakci nebo kompresi nebo název shodný se zástupnými znaky.
Existují tři možné styly syntaxe pro použití operací a voleb:
1. Tradiční styl , seskupené bez jakýchkoli pomlček.
Například:
tar cfv <archive> <file(s) or location(s)>
2. Krátký styl možnosti UNIX pomocí jedné pomlčky a seskupených možností:
tar -cfv <archive> <file(s) or location(s)>
Případně pomlčka před každou možností:
tar -c -f -v <archive> <file(s) or location(s)>
3. GNU long-option style s dvojitou pomlčkou a popisným názvem možnosti:
tar --create --file <archive> --verbose <file(s) or location(s)>
Všechny tři styly lze použít v jediném tar
příkaz.
Možnosti příkazu Tar
Následující tabulka uvádí běžně používaný tar
operace a možnosti.
Příkaz | Role | Popis |
---|---|---|
--create -c | Operace | Vytvoří nový archiv. |
--list -t | Operace | Uvádí obsah archivu. |
--extract -x | Operace | Extrahujte jednu nebo více položek z archivu. |
--append -r | Operace | Připojí soubory k existujícímu archivu. |
--concatenate -A | Operace | Připojí archivy k existujícímu archivu. |
--compare --diff -d | Operace | Porovná členy archivu se soubory v systému. |
--delete | Operace | Odstraní člena z archivu. |
--update -u | Operace | Aktualizuje archiv novými soubory, pouze pokud nejsou v archivu a jsou novější než stávající soubory. |
--file=<archive> -f <archive> | Možnost | Určuje soubor. |
-C | Možnost | Změní adresář. |
--verbose -v | Možnost | Zobrazuje soubor tar funguje za běhu. |
--wildcard | Možnost | Vykreslí možnosti vyhledávání pomocí zástupných znaků. |
--bzip2 -j | Možnost | Čtení nebo zápis komprimovaných archivů ve formátu bzip2. |
--gzip -z | Možnost | Čtení nebo zápis komprimovaných archivů ve formátu gzip. |
--xz -J | Možnost | Čtení nebo zápis komprimovaných archivů ve formátu xz. |
Podle příkladů v další části se dozvíte, jak pracovat s dehtem .
Příklady příkazů Tar
Níže uvedené příklady mají následující požadavky:
1. Vytvořte adresář s názvem tar_examples a přejděte do adresáře:
mkdir tar_examples && cd tar_examples
2. Vytvořte další adresář s názvem files v tar_examples a zadejte tento adresář:
mkdir files && cd files
3. Vytvořte soubory k naplnění souborů adresář:
touch file{0..100}.txt
Pro návrat do nadřazeného adresáře použijte:
cd ..
Všechny níže uvedené příklady vycházejí z tar_examples adresář.
1. Vytvořit archiv
Syntaxe pro vytvoření archivu závisí na typu archivu. Chcete-li vytvořit archiv, použijte tar
pomocí -c
nebo --create
operace.
Vytvořte archiv tar
Chcete-li vytvořit archiv tar (také nazývaný tarball), použijte:
tar cf <archive name>.tar <file(s) or location(s)>
Například archivujte soubory adresář:
tar cf files.tar files
Výstup obsahuje seznam všech souborů přidaných do archivu. Zobrazte obsah adresáře, abyste viděli vytvořený file.tar archiv:
tar cf files.tar files
Výstup obsahuje seznam všech souborů přidaných do archivu. Zobrazte obsah adresáře, abyste viděli vytvořený file.tar archiv:
ls -l
Vytvořte komprimovaný archiv tar.gz
Přidejte -z
možnost vytvořit komprimovaný soubor GNUzip (gzip):
tar czf <archive name>.tar.gz <file(s) or location(s)>
Například:
tar czf files.tar.gz files
Velikost souboru je menší než u běžného souboru tarball a původního adresáře.
Vytvořit komprimovaný archiv tar.bz2
bzip2 je program pro kompresi souborů a alternativa k gzip.
Chcete-li vytvořit tar.bz2 přidejte -j
tag:
tar cjf <archive name>.tar.bz2 <file(s) or location(s)>
Například:
tar cjf files.tar.bz2 files
bzip2 má vyšší kompresní poměr a trvá déle než gzip.
Vytvořit archiv tar.xz
Použijte -J
tag pro kompresi archivů ve formátu tar.xz:
tar cJf <archive name>.tar.xz <file(s) or location(s)>
Například:
tar cJf files.tar.xz files
Komprese xz trvá nejdéle ve srovnání s gzip a bz2. U větších souborů má však xz nejvyšší míru komprese.
2. Odebrat soubory po vytvoření
Chcete-li po archivaci odstranit soubory z disku, použijte --remove-files
možnost na konci:
tar cf <archive> <file(s) or location(s)> --remove-files
Vytvořte například archiv tar se soubory adresář a odstraňte jej z disku jedním příkazem:
tar cf files.tar files --remove-files
Zkontrolujte obsah adresáře, abyste se ujistili, že operace funguje správně.
3. Výpis z archivu
Extrahování z archivu nebo komprimovaného archivu používá -x
nebo --extract
operace s tar
. Další možnosti závisí na typu souboru a na tom, kam má tar extrahovat komponenty.
Výpis z archivu tar
Obecná syntaxe pro extrahování z archivu tar je:
tar xf <archive name>.tar
Ve výchozím nastavení tar extrahuje všechny součásti do aktuálního adresáře. Chcete-li označit, kam extrahovat komponenty, přidejte -C
a zadejte cestu:
tar xfC <archive name>.tar <path>
Chcete-li například vytvořit adresář s názvem extrahovaný_tar a extrahujte soubory z files.tar , spustit:
mkdir extracted_tar && tar xfC files.tar extracted_tar
Příkaz nevypíše potvrzovací zprávu. Zkontrolujte obsah adresáře, abyste potvrdili, že komponenty byly úspěšně extrahovány.
Výpis z archivu tar.gz
Použijte -z
možnost extrahovat soubor tar.gz:
tar xzf <archive name>.tar.gz
Příkaz extrahuje obsah v aktuálním adresáři. Přidejte -C
možnost určit umístění:
tar xzfC <archive name>.tar.gz <location>
Vytvořte například nový adresář s názvem extracted_gz a extrahujte files.tar.gz obsah:
mkdir extracted_gz && tar xzfC files.tar.gz extracted_gz
Extrahování komprimovaných archivů tar.gz trvá ve srovnání s jinými kompresními formáty nejméně času.
Výpis z archivu tar.bz2
Chcete-li extrahovat soubory z komprimovaného archivu tar.bz2 do aktuálního adresáře, použijte:
tar xjf <archive name>.tar.bz2
Rozbalte archivy tar.bz2 do konkrétního adresáře pomocí:
tar xjfC <archive name>tar.bz2 <location>
Například vytvořte adresář a extrahujte obsah z files.tar.bz2 :
mkdir extracted_bz2 && tar xjfC files.tar.bz2 extracted_bz2
Výpis z archivu tar.xz
Přidejte -J
možnost extrahovat z komprimovaných archivů tar.xz. Syntaxe k extrahování v aktuálním adresáři je:
tar xJf <archive name>.tar.xz
Chcete-li extrahovat obsah do konkrétního adresáře, použijte -C
a přidejte cestu:
tar xJfC <archive name>.tar.xz <location>
Jako příklad vytvořte adresář a extrahujte files.tar.xz obsah:
mkdir extracted_xz && tar xJfC files.tar.xz extracted_xz
Kompresní formát xz je střední cestou mezi gz a bz2, pokud jde o dobu extrakce.
4. Kontrola přepsání
Ovládací prvky přepisování Tar řeší situace, kdy se názvy souborů v archivu překrývají se soubory v pracovním adresáři.
Tři možné akce přepsání jsou:
1. Přepište soubory v pracovním adresáři:
tar xf <archive> <Optional file(s) or location(s)> --overwrite
2. Nepřepisujte soubory v pracovním adresáři:
tar xf <archive> <Optional file(s) or location(s)> --keep-old-files
Pokud soubory již existují, tar extrakci neprovede.
3. Extrahujte soubory, pouze pokud jsou novější než stávající soubory:
tar xf <archive> <Optional file(s) or location(s)> --keep-newer-files
Pokud jsou soubory v pracovním adresáři novější nebo stejného stáří, tar soubory nerozbalí.
5. Vypsat obsah archivu
Pomocí následujícího příkazu vypíšete obsah archivu:
tar tf <archive>
Tato možnost funguje pro jakoukoli příponu souboru obsahující tar.
Například seznam souborů a adresářů v files.tar archiv:
tar tf files.tar.gz
Výstup uvádí veškerý obsah uložený v archivu.
6. Najděte soubor v archivu
Existují dva způsoby, jak najít konkrétní obsah pomocí tar:
1. -t
možnost výpisu souborů v archivu je užitečná pro vyhledání konkrétních souborů. Přidejte název souboru (nebo názvy) za příkaz:
tar tf <archive> <file(s)>
Chcete-li například najít file50.txt v files.tar.gz archivovat, spustit:
tar tf files.tar.gz file/file50.txt
Tato možnost vyžaduje znát možnou cestu k souboru.
2. Použijte tar
společně s příkazem grep k filtrování výstupu:
tar tf <archive> | grep <file(s)>
Například:
tar tf files.tar.gz | grep file50.txt
Tato možnost nevyžaduje znát možnou cestu k souboru.
7. Najděte více souborů v archivu
Použijte --wildcards
možnost porovnat více instancí souborů. Například:
tar tf files.tar.gz --wildcards file/files5*.txt
Použijte shodu zástupných znaků, když mají soubory podobný název, nebo pro filtrování určitého typu souboru.
8. Vyloučit soubory při vytváření archivu
Chcete-li během vytváření vyloučit určité soubory z archivu, přidejte následující možnost:
tar cf <archive> --exclude='<pattern>' <files(s) or location(s)>
Například vytvořte archiv z adresáře souborů a vylučte všechny soubory .txt:
tar cf files.tar --exclude='*.txt' files
Seznam obsahu archivu:
tar tf files.tar
Výstup neukazuje žádné soubory .txt, pouze soubory adresář v archivu.
9. Extrahujte jeden soubor z archivu
Pokud potřebujete jeden nebo několik souborů, vyhněte se extrahování celého archivu.
Chcete-li získat jeden soubor z archivu:
1. Vypište obsah a zkontrolujte, zda soubor existuje:
tar tf files.tar | grep file100.txt
Výstup vytiskne cestu k souboru potřebnému pro další krok.
2. Extrahujte konkrétní soubor pomocí:
tar xf files.tar files/file100.txt
Příkaz vytvoří adresář files pouze s uvedeným souborem. Postupujte podle stejných kroků pro extrahování jednoho souboru z komprimovaných archivů přidáním příslušné značky. Použijte například -z
možnost vytáhnout ze souboru tar.gz.
10. Možnost podrobného popisu
Možnost verbose zobrazí další informace po spuštění příkazu tar. Přidejte -v
nebo --verbose
k jakékoli operaci, abyste viděli výsledek.
Vytvořte například soubor tar.gz a přidejte -v
:
tar czfv files.tar.gz files
Výstup zobrazuje každý soubor tak, jak je přidán do archivu.
Některé příkazy tar zobrazují další informace, když přidáte -v
označte dvakrát. Zkuste například přidat soubory do archivu pomocí -vv
:
tar czfvv files.tar.gz files
Výstup vypíše dlouhý formát výpisu a vypadá podobně jako spuštění příkazu ls -l.
11. Smazat z archivu
Chcete-li odstranit z archivu, vyhledejte soubor, který chcete odstranit, například:
tar tf files.tar | grep file100.txt
Poté soubor odstraňte pomocí --delete
tag:
tar --delete -f files.tar files/file100.txt
Možnost odstranění nefunguje u komprimovaných formáty souborů.
12. Připojit soubory do archivu
Přidejte soubory do existujícího archivu pomocí -r
štítek. Syntaxe je:
tar rf <archive name>.tar <file(s) or location(s)>
Připojte například komprimovaný soubor files.tar.gz soubor do files.tar archiv:
tar rf files.tar files.tar.gz
Již komprimované archivy nelze aktualizovat, takže syntaxe funguje pouze pro soubory tarball .
13. Kombinovat archivy
Použijte --concatenate
nebo -A
možnost kombinovat více archivů. Základní syntaxe je:
tar Af <archive to extend> <archive to extend with>
Jako příklad zkopírujte existující files.tar soubor pomocí příkazu cp:
cp files.tar files_copy.tar
Dále spojte dva archivy:
tar Af files.tar files_copy.tar
Chcete-li potvrdit, že zřetězení fungovalo, zkontrolujte velikost souboru.
14. Rozdíl mezi archivem a soubory
Chcete-li zkontrolovat rozdíl mezi archivem a soubory na disku, použijte -d
tag:
tar df <archive name>
Příkaz hledá stejný obsah a porovná jej s tím, co je v archivu. Tato možnost pouze kontroluje existující soubory a ignoruje všechny nově přidané soubory.
Níže uvedené kroky ukazují, jak používat -d
, --diff
, nebo --compare
tag s tar
:
1. Vytvořte archiv tar:
tar cf files.tar files
2. Porovnejte archiv se stávajícím adresářem:
tar df files.tar
Výstup nic nezobrazuje, což znamená, že mezi existujícími soubory není žádný rozdíl.
3. Přidejte text do existujícího souboru v souborech adresář:
echo 'Hello' >> files/file0.txt
4. Znovu porovnejte archiv se stávajícím adresářem:
tar df files.tar
Tentokrát výstup ukazuje rozdíly v době úpravy a velikosti pro konkrétní soubor. Porovnání poskytuje přehled o všech změnách provedených v systému po vytvoření archivu.
15. Aktualizovat soubory v archivu
Aktualizujte stávající soubory v archivu na novější verzi z disku pomocí -u
možnost:
tar uf <archive> <file(s) or location(s)>
Aktualizujte například files.tar archiv se změněným textovým souborem:
tar uf files.tar files
Zkontrolujte obsah taru pro změněný soubor:
tar tfv files.tar | grep files0.txt
Příkaz aktualizuje archiv změněnými soubory bez jakéhokoli přepisování.
16. Upravený čas
Tar nabízí různé možnosti úpravy časového razítka souboru. Při vytváření archivu nastavte vlastní datum přidáním --mtime
možnost a uvedení data:
tar cf <archive> <file(s) or location(s)> --mtime=YYYY-MM-DD
Vytvořte například archiv a nastavte datum na 1. leden 1999:
tar cf files.tar files --mtime=1999-01-01
Případně extrahujte soubory s aktuálním datem a časem:
tar xf files.tar -m
Užitečnou funkcí při práci s časem je filtrování souborů upravených po určitém datu. Chcete-li například extrahovat soubory vytvořené po datu, použijte --newer-mtime
a přidejte datum:
tar xf <archive> --newer-mtime=YYYY-MM-DD
17. Oprávnění
Existují dva možné způsoby, jak ovládat oprávnění k souboru pomocí tar při rozbalování archivu:
1. Zachovejte původní oprávnění:
tar xf <archive name> --preserve-permissions
Oprávnění jsou uvedena v souboru před vytvořením archivu.
2. Upravte oprávnění na výchozí hodnotu umask:
tar xf <archive name> --no-same-permissions
Soubory mají výchozí oprávnění pro Linux.
18. Vlastnictví souboru
Tar umožňuje konfiguraci vlastnictví souboru. Chcete-li například nastavit vlastníka souboru při vytváření archivu, přidejte --owner
a --group
možnosti a zadejte hodnoty pro každý:
tar cf <archive> <file(s) or location(s)> --owner=<value> --group=<value>
Hodnota vlastníka představuje UID (ID uživatele), zatímco hodnota skupiny je GID (ID skupiny). Chcete-li najít tyto hodnoty pro uživatele, spusťte:
id <username>
Vytvořte například archiv a nastavte vlastnictví na root:
tar cf files.tar files --owner=0 --group=0
Tar umožňuje zachovat vlastnictví při extrahování z archivu. Chcete-li tak učinit, přidejte --same-owner
možnost na konci:
tar xf <archive> --same-owner
19. Zápis do externího programu
--to-command
volba nařídí tar, aby poslal každý extrahovaný soubor na standardní výstup pro externí program. Základní syntaxe je:
tar xf <archive> --to-command='<command>'
Extrahujte například soubor files.tar obsah a roura názvy souborů jako adresáře:
tar xf files.tar --to-command='mkdir $TAR_FILENAME'
Příkaz vytvoří adresáře pojmenované po každém extrahovaném souboru. Další informace a dostupné proměnné prostředí Linuxu najdete na manuálové stránce.
20. Vytvářejte denní zálohy
Chcete-li automatizovat denní zálohování, vytvořte bash skript a přidejte následující řádky:
tar czf backup-$(date +%Y%m%d).tar.gz files
find backup* -mtime +1 -delete
Příkaz tar vytvoří komprimovaný archiv, zatímco příkaz find vyhledává záložní soubory starší než jeden den. Změňte +1
parametr na +7
za týden nebo +31
pro měsíční zálohy.