Hoe bestanden uit een .tar.gz- of .tar.bz2-bestand op Linux te extraheren

Tar-bestanden zijn gecomprimeerde archieven. Je zult ze vaak tegenkomen tijdens het gebruik van een Linux-distributie zoals Ubuntu of zelfs tijdens het gebruik van de terminal op macOS. Hier leest u hoe u de inhoud van een tar-bestand, ook wel tarball genoemd, kunt extraheren (of untar).

Wat betekenen .tar.gz en .tar.bz2?

Bestanden met de extensie .tar.gz of .tar.bz2 zijn gecomprimeerde archiefbestanden. Een bestand met alleen de extensie .tar is niet gecomprimeerd, maar dat zal zeer zeldzaam zijn.

Het .tar-gedeelte van de bestandsextensie staat voor tape-archief en is de reden dat beide bestandstypen tar-bestanden worden genoemd. Tar-bestanden dateren helemaal uit 1979 toen het tar-commando werd gemaakt om systeembeheerders in staat te stellen bestanden op tape te archiveren. Veertig jaar later gebruiken we nog steeds het tar-commando om tar-bestanden naar onze harde schijven te extraheren. Ergens gebruikt iemand waarschijnlijk nog teer met tape.

Het achtervoegsel .gz of .bz2 geeft aan dat het archief is gecomprimeerd met behulp van het gzip- of bzip2-compressiealgoritme. Het tar-commando werkt met beide soorten bestanden, dus het maakt niet uit welke compressiemethode is gebruikt – en het zou overal beschikbaar moeten zijn waar je een Bash-shell hebt. U hoeft alleen de juiste tar-opdrachtregelopties te gebruiken.

Bestanden uit Tar-bestanden extraheren

Stel dat u twee bestanden met bladmuziek hebt gedownload. Het ene bestand heet ukulele_songs.tar.gz , het andere heet guitar_songs.tar.bz2. Deze bestanden staan ​​in de map Downloads.

Laten we de ukelele-nummers extraheren:

tar -xvzf ukulele_songs.tar.gz

Terwijl de bestanden worden uitgepakt, worden ze weergegeven in het terminalvenster.

  6 Linux USB-tools om uw pc te repareren

De opdrachtregelopties die we hebben gebruikt zijn:

-x: Extract, haal de bestanden op uit het tar-bestand.
-v: Uitgebreid, vermeld de bestanden terwijl ze worden uitgepakt.
-z: Gzip, gebruik gzip om het tar-bestand te decomprimeren.
-f: Bestand, de naam van het tar-bestand waarmee we willen dat tar werkt. Deze optie moet worden gevolgd door de naam van het tar-bestand.

Maak een lijst van de bestanden in de map met ls en je zult zien dat er een map is gemaakt met de naam Ukulele Songs. De uitgepakte bestanden staan ​​in die map. Waar komt deze map vandaan? Het zat in het tar-bestand en werd samen met de bestanden uitgepakt.

Laten we nu de gitaarnummers extraheren. Om dit te doen, gebruiken we bijna exact hetzelfde commando als voorheen, maar met één belangrijk verschil. Het achtervoegsel van de extensie .bz2 vertelt ons dat het is gecomprimeerd met de opdracht bzip2. In plaats van de optie-z (gzip) te gebruiken, gebruiken we de optie -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Nogmaals, de bestanden worden naar de terminal weergegeven terwijl ze worden uitgepakt. Voor alle duidelijkheid, de opdrachtregelopties die we gebruikten met tar voor het .tar.bz2-bestand waren:

-x: Extract, haal de bestanden op uit het tar-bestand.
-v: Uitgebreid, vermeld de bestanden terwijl ze worden uitgepakt.
-j: Bzip2, gebruik bzip2 om het tar-bestand te decomprimeren.
-f: Bestand, naam van het tar-bestand waarmee we willen dat tar werkt.

Als we de bestanden in de downloadmap weergeven, zullen we zien dat er een andere map met de naam Guitar Songs is gemaakt.

Kiezen waar de bestanden naartoe moeten worden uitgepakt

Als we de bestanden naar een andere locatie dan de huidige map willen extraheren, kunnen we een doelmap specificeren met behulp van de -C (opgegeven map) optie.

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

Als we in onze Documenten/Songs-directory kijken, zien we dat de Guitar Songs-directory is aangemaakt.

  Hoe het Kodi Media Center op Linux te installeren?

Merk op dat de doelmap al moet bestaan, tar zal deze niet maken als deze niet aanwezig is. Als u een map moet maken en tar alle bestanden in één opdracht erin wilt laten uitpakken, kunt u dat als volgt doen:

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

De optie -p (ouders) zorgt ervoor dat mkdir alle bovenliggende mappen aanmaakt die nodig zijn, zodat de doelmap wordt gemaakt.

In teerbestanden kijken voordat ze worden uitgepakt

Tot nu toe hebben we een sprong in het diepe gemaakt en de bestanden ongezien uitgepakt. Misschien wil je eerst kijken voordat je springt. U kunt de inhoud van een tar-bestand bekijken voordat u het uitpakt door de -t (lijst) optie te gebruiken. Het is meestal handig om de uitvoer via het less-commando te pipen.

tar -tf ukulele_songs.tar.gz | less

Merk op dat we de optie -z niet hoeven te gebruiken om de bestanden weer te geven. We hoeven alleen de optie -z toe te voegen als we bestanden uit een .tar.gz-bestand extraheren. Evenzo hebben we de optie -j niet nodig om de bestanden in een tar.bz2-bestand weer te geven.

Als we door de uitvoer scrollen, kunnen we zien dat alles in het tar-bestand wordt bewaard in een map met de naam Ukulele Songs, en in die map zijn er bestanden en andere mappen.

We kunnen zien dat de directory Ukulele Songs mappen bevat met de namen Random Songs, Ramones en Possibles.

Gebruik de volgende opdracht om alle bestanden uit een map in een tar-bestand te extraheren. Merk op dat het pad tussen aanhalingstekens staat omdat er spaties in het pad staan.

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

Om een ​​enkel bestand uit te pakken, geeft u het pad en de naam van het bestand op.

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

U kunt een selectie van bestanden extraheren met behulp van jokertekens, waarbij * staat voor een willekeurige tekenreeks en ? staat voor een enkel teken. Het gebruik van wildcards vereist het gebruik van de optie –wildcards.

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

Bestanden uitpakken zonder mappen uit te pakken

Als u niet wilt dat de directorystructuur in het tar-bestand opnieuw wordt aangemaakt op uw harde schijf, gebruikt u de optie –strip-componenten. De optie –strip-componenten vereist een numerieke parameter. Het getal geeft aan hoeveel mappenniveaus moeten worden genegeerd. Bestanden uit de genegeerde mappen worden nog steeds uitgepakt, maar de mappenstructuur wordt niet gerepliceerd op uw harde schijf.

  Hoe de Qutebrowser-webbrowser op Linux in te stellen en te gebruiken?

Als we -strip-components=1 specificeren met ons voorbeeld-tar-bestand, wordt de bovenste map Ukulele Songs in het tar-bestand niet op de harde schijf gemaakt. De bestanden en mappen die naar die map zouden zijn uitgepakt, worden uitgepakt in de doelmap.

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

Er zijn slechts twee niveaus voor het nesten van mappen in ons voorbeeld-tar-bestand. Dus als we –strip-component=2 gebruiken, worden alle bestanden uitgepakt in de doelmap en worden er geen andere mappen gemaakt.

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

Als je kijkt naar de Linux man pagina je zult zien dat tar een goede kandidaat moet zijn voor de titel van “opdracht met de meeste opdrachtregelopties”. Om ons in staat te stellen bestanden uit .tar.gz- en tar.bz2-bestanden te extraheren met een goede mate van gedetailleerde controle, hoeven we gelukkig maar een handvol van deze opties te onthouden.