- Dave McKay
@TheGurkha
- 5. dubna 2019, 8:00 EDT
Tar soubory jsou komprimované archivy. Setkáte se s nimi často při používání linuxové distribuce, jako je Ubuntu, nebo dokonce při používání terminálu v systému macOS. Zde je návod, jak extrahovat – nebo rozbalit – obsah souboru tar, známého také jako tarball.
Co znamenají .tar.gz a .tar.bz2?
Soubory, které mít .tar.gz
nebo .tar.bz2
příponu jsou komprimované archivní soubory. Soubor pouze s .tar
příponou je nekomprimovaný, ale ty budou velmi vzácné.
Část .tar
přípona souboru znamená páskový archiv a je důvodem, že oba tyto typy souborů se nazývají tar soubory. Soubory tar sahají až do roku 1979, kdy byl vytvořen příkaz tar
, který umožňuje správcům systému archivovat soubory na pásku. O čtyřicet let později stále používáme příkaz tar
k extrahování souborů tar na naše pevné disky. Někdo někde pravděpodobně stále používá tar
s páskou.
.gz
nebo Přípona .bz2
označuje, že archiv byl komprimován pomocí gzip
nebo bzip2
kompresní algoritmus. Příkaz tar
bude šťastně fungovat s oběma typy souborů, takže nezáleží na tom, která metoda komprese byla použita – a měl by být k dispozici všude, kde máte shell Bash. Stačí použít příslušné tar
možnosti příkazového řádku.
Extrakce souborů ze souborů Tar
Řekněme, že jste stáhli dva soubory noty. Jeden soubor se jmenuje ukulele_songs.tar.gz
, druhý se nazývá guitar_songs.tar.bz2
. Tyto soubory jsou v adresáři Stažené soubory.
Rozbalme si skladby ukulele:
tar -xvzf ukulele_songs.tar.gz
Při extrahování souborů jsou uvedeny v okno terminálu.
Možnosti příkazového řádku, které jsme použili, jsou:
- -x: Extrahovat, načíst soubory ze souboru tar.
- – v: Verbose, seznam souborů, které se extrahují.
- -z: Gzip, pomocí gzip dekomprimujte soubor tar.
- -f: Soubor, název tar soubor, se kterým
tar
pracujeme. Po této možnosti musí následovat název souboru tar.
Seznam souborů v adresáři pomocí ls
a uvidíte, že byl vytvořen adresář s názvem Ukulele Songs. Extrahované soubory jsou v tomto adresáři. Odkud pochází tento adresář? Byl obsažen v tar
souboru a byl extrahován spolu se soubory.
Nyní pojďme extrahovat kytarové písničky. K tomu použijeme téměř úplně stejný příkaz jako předtím, ale s jedním důležitým rozdílem. Přípona .bz2
nám říká, že byla komprimována pomocí příkazu bzip2. Místo použití možnosti -z
(gzip) použijeme možnost -j
(bzip2).
tar -xvjf guitar_songs.tar.bz2
Soubory jsou znovu uvedeny na terminálu, jakmile jsou extrahovány. Aby bylo jasno, možnosti příkazového řádku, které jsme použili u tar
pro soubor .tar.bz2
, byly:
Pokud uvedeme seznam soubory v adresáři Download uvidíme, že byl vytvořen další adresář s názvem Guitar Songs.
Volba, kam se mají extrahovat soubory
Pokud chceme extrahovat soubory do umístění kromě aktuálního adresáře můžeme určit cílový adresář pomocí volby -C
(zadaný adresář).
tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
Při pohledu do adresáře Documents / Songs uvidíme, že byl vytvořen adresář Guitar Songs.
Upozorňujeme, že cílový adresář již musí existovat, tar
jej nevytvoří, pokud není k dispozici. Pokud potřebujete vytvořit adresář a tar
extrahovat do něj všechny soubory v jednom příkazu, můžete to udělat takto:
mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/
Možnost -p
(rodiče) způsobí, že mkdir
vytvoří všechny nadřazené adresáře, které jsou požadovány, a zajistí tak cílový adresář je vytvořeno.
Nahlédnutí do souborů Tar před jejich extrakcí
Zatím jsme udělali skok víry a extrahovali soubory neviditelné. Možná byste se rádi podívali, než skočíte. Obsah souboru tar
můžete zkontrolovat před jeho extrahováním pomocí možnosti -t
(seznam).Obvykle je vhodné propojit výstup pomocí příkazu less
.
tar -tf ukulele_songs.tar.gz | less
Všimněte si, že k výpisu souborů nemusíme používat možnost -z
. Možnost -z
musíme přidat, pouze když extrahujeme soubory ze souboru .tar.gz
. Stejně tak nepotřebujeme možnost -j
k výpisu souborů v souboru tar.bz2
.
Procházení výstup vidíme, že vše v souboru tar je uloženo v adresáři nazvaném Ukulele Songs a v tomto adresáři jsou soubory a další adresáře.
Vidíme, že adresář Songy Ukulele obsahuje adresáře zvané Náhodné skladby, Ramones a Possibles.
Chcete-li extrahovat všechny soubory z adresáře v souboru tar, použijte následující příkaz. Cesta je zabalena do uvozovek, protože v cestě jsou mezery.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
Chcete-li extrahovat jeden soubor, uveďte cestu a název souboru.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
Výběr souborů můžete extrahovat pomocí zástupných znaků, kde *
představuje libovolný řetězec znaků a ?
představuje libovolný jeden znak. Použití zástupných znaků vyžaduje použití možnosti --wildcards
.
tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"
Extrahování souborů bez extrahování adresářů
Pokud si nepřejete, aby byla adresářová struktura v souboru tar znovu vytvořena na vašem pevném disku, použijte volbu --strip-components
. Možnost --strip-components
vyžaduje číselný parametr. Číslo představuje počet úrovní adresářů, které se mají ignorovat. Soubory z ignorovaných adresářů se stále extrahují, ale adresářová struktura se na vašem pevném disku nereplikuje.
Pokud zadáme --strip-components=1
s naším ukázkovým souborem tar, Ukulele Songs nejvyšší adresář v souboru tar není vytvořen na pevném disku. Soubory a adresáře, které by byly extrahovány do tohoto adresáře, jsou extrahovány v cílovém adresáři.
tar -xvzf ukulele_songs.tar.gz --strip-components=1
Existují pouze dva úrovně vnoření adresáře v našem vzorovém souboru tar. Pokud tedy použijeme --strip-components=2
, všechny soubory se extrahují v cílovém adresáři a nevytvoří se žádné další adresáře.
tar -xvzf ukulele_songs.tar.gz --strip-components=2
Pokud se podíváte na manuálovou stránku Linuxu, uvidíte, že tar
musí být dobrým kandidátem na titul příkazu, který má nejvíce možností příkazového řádku. Naštěstí, abychom mohli extrahovat soubory ze souborů .tar.gz
a tar.bz2
s dobrou mírou granulární kontroly, musíme si pamatovat jen hrstku z těchto možností.
Dave McKay poprvé používal počítače, když byla v módě děrovaná papírová páska, a od té doby programuje . Po více než 30 letech v IT průmyslu je nyní technologickým novinářem na plný úvazek. Během své kariéry pracoval jako nezávislý programátor, manažer mezinárodního týmu pro vývoj softwaru, projektový manažer IT služeb a naposledy , jako inspektor ochrany údajů. Dave je evangelista Linuxu a zastánce otevřeného zdroje. Číst celé bio „