Bestanden extraheren uit een .tar.gz- of .tar.bz2-bestand op Linux

  • Dave McKay

    @TheGurkha

  • 5 april 2019, 8:00 uur EDT
Fatmawati Achmad Zaenuri / .com

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 untarren).

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

Bestanden die een .tar.gz of een .tar.bz2 extensie zijn gecomprimeerde archiefbestanden. Een bestand met alleen een .tar extensie is niet gecomprimeerd, maar die zullen 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 terug tot 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 uit te pakken naar onze harde schijven. Iemand ergens gebruikt waarschijnlijk nog steeds tar met tape.

Advertentie

De .gz of .bz2 extensie-achtervoegsel geeft aan dat het archief is gecomprimeerd met de gzip of bzip2 compressie-algoritme. Het tar -commando werkt goed met beide bestandstypen, dus het maakt niet uit welke compressiemethode werd 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

Laten we zeggen dat u twee bestanden heeft gedownload bladmuziek. Het ene bestand heet ukulele_songs.tar.gz, het andere heet guitar_songs.tar.bz2. Deze bestanden bevinden zich in de map Downloads.

Laten we de ukulele-liedjes uitpakken:

tar -xvzf ukulele_songs.tar.gz 

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

De opdrachtregelopties die we hebben gebruikt zijn:

  • -x: Extract, haal de bestanden op uit het tar-bestand.
  • – v: Uitgebreid, geef een lijst van de bestanden terwijl ze worden uitgepakt.
  • -z: Gzip, gebruik gzip om het tar-bestand te decomprimeren.
  • -f: File, de naam van de 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 een map is gemaakt met de naam Ukulele Songs. De uitgepakte bestanden bevinden zich in die map. Waar komt deze directory vandaan? Het zat in het tar -bestand en werd samen met de bestanden uitgepakt.

Advertentie

Laten we nu de gitaarliedjes uitpakken. Om dit te doen, gebruiken we bijna exact hetzelfde commando als hiervoor, maar met een belangrijk verschil. Het .bz2 extensie achtervoegsel vertelt ons dat het gecomprimeerd is met het bzip2 commando. In plaats van de -z (gzip) optie te gebruiken, zullen we de -j (bzip2) optie gebruiken.

tar -xvjf guitar_songs.tar.bz2

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

de bestanden in de downloadmap zien we 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 locatie willen uitpakken anders dan de huidige directory, kunnen we een doeldirectory specificeren met de optie -C (opgegeven directory).

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

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

Merk op dat de doeldirectory al moet bestaan, tar zal het niet maken als het niet aanwezig is. Als u een map moet maken en tar de bestanden in één opdracht moet uitpakken, kunt u dat als volgt doen:

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

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

In Tar-bestanden kijken alvorens ze te extraheren

Tot dusver hebben we zojuist een sprong in het diepe genomen en de bestanden uitgepakt die we ongezien zagen. Misschien wil je kijken voordat je springt. U kunt de inhoud van een tar -bestand bekijken voordat u het uitpakt met de optie -t (lijst).Het is meestal handig om de uitvoer door het less commando te leiden.

tar -tf ukulele_songs.tar.gz | less
Advertentie

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 wanneer we bestanden uitpakken uit een .tar.gz -bestand. Evenzo hebben we de optie -j niet nodig om de bestanden in een tar.bz2 -bestand weer te geven.

Doorbladeren de uitvoer kunnen we zien dat alles in het tar-bestand wordt bewaard in een map genaamd Ukulele Songs, en binnen die map zijn er bestanden en andere mappen.

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

Gebruik het volgende commando om alle bestanden uit een map binnen 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/"
Advertentie

Om een enkel bestand uit te pakken, geef 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 reeks tekens en ? staat voor een enkel teken. Het gebruik van jokertekens vereist het gebruik van de optie --wildcards.

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

Bestanden extraheren zonder mappen uit te pakken

Als je niet wilt dat de directorystructuur in het tar-bestand opnieuw wordt aangemaakt op je harde schijf, gebruik dan de --strip-components optie. De optie --strip-components vereist een numerieke parameter. Het getal geeft aan hoeveel niveaus van mappen moeten worden genegeerd. Bestanden uit de genegeerde mappen worden nog steeds uitgepakt, maar de mapstructuur wordt niet gerepliceerd op uw harde schijf.

Als we --strip-components=1 specificeren met ons voorbeeld tar-bestand, de De bovenste directory van de ukulele-nummers in het tar-bestand wordt 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
Advertentie

Er zijn er maar twee niveaus van directory-nesting in ons voorbeeld tar-bestand. Dus als we --strip-components=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 naar de Linux man-pagina kijkt, zul je zien dat tar een goede kandidaat moet zijn voor de titel van “commando met de meeste opdrachtregelopties.” Gelukkig, 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 maar een handvol van deze opties.

Dave McKay
Dave McKay gebruikte voor het eerst computers toen geperforeerd papier in zwang was, en hij programmeert sindsdien Na meer dan 30 jaar in de IT-industrie is hij nu een fulltime technologiejournalist. Tijdens zijn carrière heeft hij gewerkt als freelance programmeur, manager van een internationaal softwareontwikkelingsteam, projectmanager IT-services en, meest recentelijk, , als functionaris voor gegevensbescherming. Dave is een Linux-evangelist en open source-pleitbezorger. Lees de volledige biografie “

Leave a Reply

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *