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

Tar soubory 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, které mají příponu .tar.gznebo .tar.bz2příponu, jsou komprimované archivní soubory. Soubor pouze s .tarpříponou je nekomprimovaný, ale ty budou velmi vzácné.

.tarČást přípony souboru znamená t opice ar pažitka, a je důvod, že oba tyto typy souborů se nazývají tar soubory. Soubory tar sahají až do roku 1979, kdy tarbyl vytvořen příkaz, který správcům systému umožňoval archivovat soubory na pásku. O čtyřicet let později stále používáme tarpříkaz k extrahování souborů tar na naše pevné disky. Někdo někde pravděpodobně stále používá tarpásku.

.gzNebo .bz2rozšíření přípona indikuje, že archiv byl komprimován, buď pomocí gzipnebo bzip2kompresní algoritmus. tarPříkaz bude fungovat šťastně s oběma typy souborů, takže nezáleží na tom, která metoda komprese byl použit, a to by mělo být k dispozici všude tam, kde máte bash shell. Musíte pouze použít příslušné tar možnosti příkazového řádku.

Extrahování souborů ze souborů Tar

Řekněme, že jste stáhli dva soubory hudebnin. Jeden soubor se nazývá ukulele_songs.tar.gz, druhý se nazývá guitar_songs.tar.bz2. Tyto soubory jsou v adresáři Stažené soubory.

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, načte soubory ze souboru tar.
  • -v : Podrobně, uveďte seznam souborů, které se extrahují.
  • -z : Gzip, pomocí gzip dekomprimujte soubor tar.
  • -f : Soubor, název souboru tar, se kterým chceme tarpracovat. Po této volbě musí následovat název souboru tar.

Seznamte soubory v adresáři s lsa 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 tarsouboru a byl extrahován spolu se soubory.

Nyní pojďme extrahovat kytarové písně. K tomu použijeme téměř přesně stejný příkaz jako předtím, ale s jedním důležitým rozdílem. .bz2Prodloužení Přípona nám říká, že to byl komprimován 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 tarpro .tar.bz2soubor použili, byly:

  • -x : Extrahuje, načte soubory ze souboru tar.
  • -v : Podrobně, uveďte seznam souborů, které se extrahují.
  • -j : Bzip2, použijte bzip2 k dekompresi souboru tar.
  • -f : Soubor, název souboru tar, se kterým chceme, aby tar pracoval.

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

Výběr místa, kam se mají soubory extrahovat

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

tar -xvjf guitar_songs.tar.gz -C ~ / Dokumenty / Písně /

Při pohledu do našeho adresáře Documents / Songs uvidíme, že byl vytvořen adresář Guitar Songs.

Cílový adresář již musí existovat, tarnevytvoří jej, pokud není k dispozici. Pokud potřebujete vytvořit adresář a tarextrahovat do něj všechny soubory v jednom příkazu, můžete to udělat následovně:

mkdir -p ~ / Dokumenty / Písně / Staženo && tar -xvjf guitar_songs.tar.gz -C ~ / Dokumenty / Písně / Staženo /

Možnost -p (rodiče) způsobí mkdirvytvoření všech nadřazených adresářů, které jsou požadovány, a zajistí tak vytvoření cílového adresáře.

Nahlédnutí do souborů dehtu před jejich extrakcí

Zatím jsme udělali skok víry a vytáhli neviditelné soubory. Možná byste se rádi podívali, než skočíte. Obsah tarsouboru můžete před extrahováním zkontrolovat pomocí možnosti -t(seznam). Obvykle je vhodné posílat výstup přes lesspříkaz.

tar -tf ukulele_songs.tar.gz | méně

Všimněte si, že nemusíme používat tuto -zmožnost k výpisu souborů. Tuto -zmožnost musíme přidat, pouze když extrahujeme soubory ze .tar.gzsouboru. Stejně tak nepotřebujeme -jmožnost vypsat soubory do tar.bz2souboru.

Při procházení výstupem 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ář Ukulele Songs obsahuje adresáře s názvem Random Songs, Ramones a Possibles.

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ý jeden znak. Použití zástupných znaků vyžaduje použití této --wildcardsmožnosti.

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 tuto --strip-componentsmožnost. Tato --strip-componentsmožnost 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 pevném disku nereplikuje.

Pokud zadáme --strip-components=1pomocí našeho ukázkového souboru tar, nebude na pevném disku vytvořen nejvyšší adresář Ukulele Songs v souboru tar. 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 ukázkovém souboru tar jsou pouze dvě úrovně vnoření adresáře. 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

Podíváte-li se na manuálovou stránku Linuxu, uvidíte, že tarmusí být dobrým kandidátem na titul „příkaz, který má nejvíce možností příkazového řádku.“ Naštěstí, abychom mohli extrahovat soubory .tar.gza tar.bz2soubory s dobrým stupněm granulární kontroly, musíme si pamatovat jen hrstku těchto možností.