- Dave McKay
@TheGurkha
- 5 april 2019, 8:00 uur EDT
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.
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.
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/
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
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/"
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
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 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 “