Fájlok kibontása .tar.gz vagy .tar.bz2 fájlból Linux rendszeren

A Tar fájlok tömörített archívumok. Gyakran találkozhat velük Linux-disztribúciók, például Ubuntu használata közben, vagy akár a terminál használata közben a macOS rendszeren. Így bonthatja ki – vagy távolíthatja el – a tar fájl tartalmát, vagy más néven tarballt.

Mit jelent a .tar.gz és a .tar.bz2?

A .tar.gz vagy .tar.bz2 kiterjesztésű fájlok tömörített archív fájlok. A csak .tar kiterjesztésű fájl tömörítetlen, de ezek nagyon ritkák.

A fájlkiterjesztés .tar része a szalagos archívumot jelenti, és ez az oka annak, hogy mindkét fájltípust tar fájlnak nevezik. A Tar fájlok egészen 1979-ig nyúlnak vissza, amikor létrehozták a tar parancsot, amely lehetővé tette a rendszergazdáknak a fájlok szalagra történő archiválását. Negyven évvel később még mindig a tar parancsot használjuk a tar fájlok merevlemezeinkre való kibontására. Valaki valahol valószínűleg még mindig kátrányt használ ragasztószalaggal.

A .gz vagy .bz2 kiterjesztésű utótag azt jelzi, hogy az archívumot a gzip vagy a bzip2 tömörítési algoritmussal tömörítették. A tar parancs mindkét fájltípussal jól működik, így nem számít, melyik tömörítési módszert használtuk – és mindenhol elérhetőnek kell lennie, ahol van Bash shell. Csak a megfelelő tar parancssori beállításokat kell használnia.

Fájlok kibontása Tar Filesból

Tegyük fel, hogy letöltött két kottát. Az egyik fájl neve ukulele_songs.tar.gz , a másik guitar_songs.tar.bz2. Ezek a fájlok a Letöltések könyvtárban találhatók.

Vegyük ki az ukulele dalokat:

tar -xvzf ukulele_songs.tar.gz

A fájlok kicsomagolása közben megjelennek a terminál ablakában.

Az általunk használt parancssori beállítások a következők:

-x: Kicsomagolja, lekéri a fájlokat a tar fájlból.
-v: Bőbeszédű, listázza ki a fájlokat, ahogy kicsomagolják őket.
-z: Gzip, használja a gzip-et a tar fájl kibontásához.
-f: Fájl, annak a tar fájlnak a neve, amellyel dolgozni akarunk. Ezt az opciót a tar fájl nevének kell követnie.

Sorolja fel a fájlokat a könyvtárban az ls segítségével, és látni fogja, hogy létrejött az Ukulele Songs nevű könyvtár. A kicsomagolt fájlok ebben a könyvtárban vannak. Honnan jött ez a könyvtár? A tar fájlban volt, és a fájlokkal együtt kicsomagolták.

Most vegyük ki a gitáros dalokat. Ehhez szinte pontosan ugyanazt a parancsot fogjuk használni, mint korábban, de egy fontos különbséggel. A .bz2 kiterjesztésű utótag azt jelzi, hogy a bzip2 paranccsal tömörítettük. A -z (gzip) opció használata helyett a -j (bzip2) opciót fogjuk használni.

tar -xvjf guitar_songs.tar.bz2

Ismét a fájlok listázásra kerülnek a terminálon, ahogy kicsomagolják őket. Az egyértelműség kedvéért a következő parancssori beállításokat használtuk a tar esetén a .tar.bz2 fájlhoz:

-x: Kicsomagolja, lekéri a fájlokat a tar fájlból.
-v: Bőbeszédű, listázza ki a fájlokat, ahogy kicsomagolják őket.
-j: Bzip2, használja a bzip2-t a tar fájl kicsomagolásához.
-f: Fájl, annak a tar fájlnak a neve, amellyel dolgozni akarunk.

Ha felsoroljuk a fájlokat a Download könyvtárban, látni fogjuk, hogy egy másik könyvtár jött létre Guitar Songs néven.

A fájlok kibontásának helyének kiválasztása

Ha az aktuális könyvtártól eltérő helyre szeretnénk kibontani a fájlokat, akkor a -C (specified directory) kapcsolóval megadhatunk egy célkönyvtárat.

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

A Documents/Songs könyvtárunkban látjuk, hogy a Gitárdalok könyvtár létrejött.

Vegye figyelembe, hogy a célkönyvtárnak már léteznie kell, a tar nem hozza létre, ha nincs jelen. Ha létre kell hoznia egy könyvtárat, és egy paranccsal tar kell kibontania a fájlokat, akkor ezt a következőképpen teheti meg:

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

A -p (parents) kapcsoló hatására az mkdir minden szükséges szülőkönyvtárat létrehoz, így biztosítva a célkönyvtár létrehozását.

Nézze meg a kátrányfájlok belsejét, mielőtt kicsomagolja őket

Eddig csak tettünk egy ugrást a hitben, és láthatatlanul kibontottuk a fájlokat. Érdemes megnézni, mielőtt ugrik. A tar fájl tartalmát a -t (lista) kapcsolóval ellenőrizheti, mielőtt kicsomagolja. Általában célszerű a kimenetet a less paranccsal átvezetni.

tar -tf ukulele_songs.tar.gz | less

Figyeljük meg, hogy nem kell a -z kapcsolót használnunk a fájlok listázásához. Csak akkor kell hozzáadnunk a -z kapcsolót, ha .tar.gz fájlból bontunk ki fájlokat. Hasonlóképpen, nincs szükségünk a -j kapcsolóra a fájlok tar.bz2 fájlban való listázásához.

A kimenetet görgetve láthatjuk, hogy a tar fájlban minden egy Ukulele Songs nevű könyvtárban található, és ebben a könyvtárban vannak fájlok és egyéb könyvtárak.

Láthatjuk, hogy az Ukulele Songs könyvtár Random Songs, Ramones és Possibles nevű könyvtárakat tartalmaz.

Az összes fájl kicsomagolásához egy tar fájlon belüli könyvtárból használja a következő parancsot. Vegye figyelembe, hogy az elérési út idézőjelekbe van foglalva, mert az elérési útban szóközök vannak.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"

Egyetlen fájl kibontásához adja meg a fájl elérési útját és nevét.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"

A kiválasztott fájlokat helyettesítő karakterek használatával bonthatja ki, ahol a * bármilyen karakterláncot jelöl, és a ? bármely karaktert jelöl. A helyettesítő karakterek használatához a –wildcards opció használata szükséges.

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

Fájlok kibontása könyvtárak kibontása nélkül

Ha nem szeretné, hogy a tar fájlban lévő könyvtárstruktúra újra létrejöjjön a merevlemezen, használja a –strip-components opciót. A –strip-components opció numerikus paramétert igényel. A szám azt jelzi, hogy hány könyvtárszintet kell figyelmen kívül hagyni. A figyelmen kívül hagyott könyvtárak fájlok továbbra is kibontásra kerülnek, de a könyvtárstruktúra nem replikálódik a merevlemezen.

Ha a –strip-components=1 értéket adjuk meg a példa tar fájlunkkal, akkor a tar fájl legfelső Ukulele Songs könyvtára nem jön létre a merevlemezen. Az ebbe a könyvtárba kicsomagolt fájlok és könyvtárak a célkönyvtárban lesznek kicsomagolva.

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

A példatár-fájlunkban csak két szint van egymásba ágyazva. Tehát ha a –strip-components=2-t használjuk, akkor az összes fájl kicsomagolásra kerül a célkönyvtárban, és nem jön létre más könyvtár.

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

Ha megnézed a Linuxot man oldal látni fogja, hogy a tar-nak jó jelöltnek kell lennie a „legtöbb parancssori opcióval rendelkező parancs” címre. Szerencsére, hogy lehetővé tegyük a .tar.gz és tar.bz2 fájlokból történő fájlok kibontását, megfelelő fokú részletes szabályozással, csak néhány beállítást kell megjegyeznünk.