Jak extrahovat soubory ze souboru .tar.gz nebo .tar.bz2 v systému Linux

Soubory Tar jsou komprimované archivy. Často se s nimi setkáte při používání distribuce Linuxu, 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 znamená .tar.gz a .tar.bz2?

Soubory s příponou .tar.gz nebo .tar.bz2 jsou komprimované archivní soubory. Soubor pouze s příponou .tar je nekomprimovaný, ale to bude velmi vzácné.

Část přípony souboru .tar znamená páskový archiv a je důvodem, proč se oba tyto typy souborů nazývají soubory tar. Soubory Tar pocházejí z roku 1979, kdy byl vytvořen příkaz tar, který správcům systému umožnil 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á dehet s páskou.

Přípona .gz nebo .bz2 označuje, že archiv byl komprimován pomocí komprimačního algoritmu gzip nebo bzip2. 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 dostupný všude, kde máte prostředí Bash. Stačí použít příslušné možnosti příkazového řádku tar.

Extrahování souborů ze souborů Tar

Řekněme, že jste si stáhli dva soubory not. Jeden soubor se jmenuje ukulele_songs.tar.gz , druhý se jmenuje guitar_songs.tar.bz2. Tyto soubory jsou v adresáři Downloads.

  6 nejlepších motivů ikon pro Linux

Pojďme extrahovat písně ukulele:

tar -xvzf ukulele_songs.tar.gz

Jak jsou soubory extrahovány, jsou uvedeny v okně terminálu.

Možnosti příkazového řádku, které jsme použili, jsou:

-x: Extrahuje a načte soubory ze souboru tar.
-v: Podrobně, seznam souborů, jak jsou extrahovány.
-z: Gzip, použijte gzip k dekomprimaci souboru tar.
-f: Soubor, název souboru tar, se kterým má tar pracovat. Za touto volbou 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. Kde se vzal tento adresář? Byl obsažen v souboru tar a byl extrahován spolu se soubory.

Nyní si vyberme kytarové písně. K tomu použijeme téměř přesně stejný příkaz jako dříve, 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í volby-z (gzip) použijeme volbu -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Znovu jsou soubory uvedeny v terminálu, když jsou extrahovány. Aby bylo jasno, možnosti příkazového řádku, které jsme použili s tar pro soubor .tar.bz2, byly:

-x: Extrahovat, načíst soubory ze souboru tar.
-v: Podrobně, seznam souborů, jak jsou extrahovány.
-j: Bzip2, použijte bzip2 k dekomprimaci souboru tar.
-f: Soubor, název souboru tar, se kterým má tar pracovat.

Pokud uvedeme soubory v adresáři Download, uvidíme, že byl vytvořen další adresář s názvem Guitar Songs.

  Jak nainstalovat téma Arc And Arc Darker na Linux

Výběr Kam extrahovat soubory

Pokud chceme soubory extrahovat do jiného umístění, než je aktuální adresář, můžeme určit cílový adresář pomocí volby -C (zadaný adresář).

tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/

Když se podíváme do našeho adresáře Documents/Songs, uvidíme, že byl vytvořen adresář Guitar Songs.

Všimněte si, že cílový adresář již musí existovat, tar jej nevytvoří, pokud není přítomen. Pokud potřebujete vytvořit adresář a nechat do něj tar extrahovat soubory jedním příkazem, můžete to udělat následovně:

mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

Volba -p (rodiče) způsobí, že mkdir vytvoří všechny nadřazené adresáře, které jsou vyžadovány, čímž zajistí vytvoření cílového adresáře.

Pohled do dehtových pilníků před jejich extrakcí

Zatím jsme jen udělali skok ve víře a vytáhli neviditelné soubory. Možná byste se rádi podívali, než skočíte. Před extrahováním souboru tar můžete zkontrolovat obsah souboru pomocí volby -t (seznam). Obvykle je vhodné vést výstup přes příkaz less.

tar -tf ukulele_songs.tar.gz | less

Všimněte si, že k výpisu souborů nemusíme používat volbu -z. Volbu -z musíme přidat pouze tehdy, když extrahujeme soubory ze souboru .tar.gz. Stejně tak nepotřebujeme volbu -j k výpisu souborů v souboru tar.bz2.

Procházením výstupu můžeme vidět, že vše v souboru tar je uloženo v adresáři zvaném Ukulele Songs a v tomto adresáři jsou soubory a další adresáře.

Vidíme, že adresář Ukulele Songs obsahuje adresáře nazvané Random Songs, Ramones a Possibles.

  Jak nainstalovat hudební přehrávač Museeks na Linux

Chcete-li extrahovat všechny soubory z adresáře v souboru tar, použijte následující příkaz. Všimněte si, že 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, zadejte 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ý jednotlivý znak. Použití zástupných znaků vyžaduje použití volby –wildcards.

tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"

Extrahování souborů bez rozbalování adresářů

Pokud nechcete, aby byla na vašem pevném disku znovu vytvořena adresářová struktura v souboru tar, použijte volbu –strip-components. Možnost –strip-components vyžaduje číselný parametr. Číslo představuje, kolik úrovní adresářů se má ignorovat. Soubory z ignorovaných adresářů jsou stále extrahovány, ale adresářová struktura není replikována na váš pevný disk.

Pokud v našem vzorovém souboru tar zadáme –strip-components=1, nejvyšší adresář Ukulele Songs v souboru tar se na pevném disku nevytvoří. 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

V našem vzorovém souboru tar jsou pouze dvě úrovně vnoření adresářů. Pokud tedy použijeme –strip-components=2, všechny soubory se extrahují do cílového adresáře a žádné další adresáře se nevytvoří.

tar -xvzf ukulele_songs.tar.gz --strip-components=2

Když se podíváte na Linux manuálová stránka uvidíte, že tar musí být dobrým kandidátem na titul „příkaz s nejvíce možnostmi příkazového řádku“. Naštěstí, abychom mohli extrahovat soubory ze souborů .tar.gz a tar.bz2 s dobrým stupněm granulární kontroly, musíme si pamatovat pouze několik z těchto možností.