Hvordan trekke ut filer fra en .tar.gz- eller .tar.bz2-fil på Linux

  • Dave McKay

    @TheGurkha

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

Tar-filer er komprimerte arkiver. Du møter dem ofte mens du bruker en Linux-distribusjon som Ubuntu eller til og med mens du bruker terminalen på macOS. Slik trekker du ut – eller fjerner – innholdet i en tar-fil, også kjent som en tarball.

Hva betyr .tar.gz og .tar.bz2?

Filer som har en .tar.gz eller en .tar.bz2 utvidelse er komprimerte arkivfiler. En fil med bare en .tar -utvidelse er ukomprimert, men de vil være svært sjeldne.

.tar -delen av filtypen står for tape arkiv, og er grunnen til at begge disse filtypene kalles tar filer. Tar-filer dateres helt tilbake til 1979 da tar -kommandoen ble opprettet for å tillate systemadministratorer å arkivere filer på bånd. Førti år senere bruker vi fremdeles tar -kommandoen for å trekke ut tarfiler på harddiskene våre. Noen bruker nok tar med tape.

Annonse

.gz eller .bz2 forlengelsessuffiks indikerer at arkivet er komprimert ved hjelp av gzip eller bzip2 komprimeringsalgoritme. Kommandoen tar fungerer lykkelig med begge filtypene, så det spiller ingen rolle hvilken komprimeringsmetode som ble brukt – og den skal være tilgjengelig overalt hvor du har et Bash-skall. Du trenger bare å bruke de riktige tar kommandolinjealternativene.

Pakke ut filer fra tarfiler

La oss si at du har lastet ned to filer av noter. Den ene filen heter ukulele_songs.tar.gz, den andre heter guitar_songs.tar.bz2. Disse filene er i katalogen for nedlastinger.

La oss trekke ut ukulele-sangene:

tar -xvzf ukulele_songs.tar.gz 

Når filene er hentet, er de oppført i terminalvinduet.

Alternativene for kommandolinjen vi brukte er:

  • -x: Pakk ut, hent filene fra tarfilen.
  • – v: Formuler, liste opp filene mens de pakkes ut.
  • -z: Gzip, bruk gzip for å dekomprimere tarfilen.
  • -f: File, navnet på tjæren fil vi vil at tar skal jobbe med. Dette alternativet må følges av navnet på tarfilen.

Liste filene i katalogen med ls, og du vil se at en katalog er opprettet som heter Ukulele Songs. De ekstraherte filene er i den katalogen. Hvor kom denne katalogen fra? Den var inneholdt i tar -filen, og ble hentet sammen med filene.

Annonse

La oss nå trekke ut gitarsangene. For å gjøre dette bruker vi nesten nøyaktig samme kommando som før, men med en viktig forskjell. .bz2 -tilleggssuffikset forteller oss at det er blitt komprimert ved hjelp av bzip2-kommandoen. I stedet for å bruke alternativet -z (gzip), vil vi bruke alternativet -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Nok en gang blir filene listet opp til terminalen når de ekstraheres. For å være tydelig var kommandolinjealternativene vi brukte med tar for .tar.bz2 -filen:

Hvis vi viser filene i nedlastingskatalogen vil vi se at det er opprettet en annen katalog kalt gitarsanger.

Velge hvor filene skal pakkes ut

Hvis vi vil trekke ut filene til et sted annet enn den nåværende katalogen, kan vi spesifisere en målkatalog ved hjelp av alternativet -C (spesifisert katalog).

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

Når vi ser i katalogen Dokumenter / sanger, ser vi at katalogen for gitarsanger er opprettet.

Merk at målkatalogen allerede må eksistere, tar vil ikke opprette den hvis den ikke er tilstede. Hvis du trenger å opprette en katalog og tar trekke ut filene i det hele i en kommando, kan du gjøre det som følger:

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

Alternativet -p (foreldre) fører til at mkdir oppretter eventuelle overordnede kataloger som kreves, og sikrer målkatalogen er opprettet.

Ser på tjærefiler før vi trekker dem ut

Så langt har vi nettopp tatt et sprang av tro og hentet filene usynlige. Du vil kanskje se før du hopper. Du kan se gjennom innholdet i en tar -fil før du trekker den ut ved å bruke alternativet -t (liste).Det er vanligvis praktisk å røre utgangen gjennom less -kommandoen.

tar -tf ukulele_songs.tar.gz | less
Annonse

Legg merke til at vi ikke trenger å bruke alternativet -z for å liste opp filene. Vi trenger bare å legge til alternativet -z når vi trekker ut filer fra en .tar.gz -fil. På samme måte trenger vi ikke -j -alternativet for å liste filene i en tar.bz2 -fil.

Bla gjennom utgangen kan vi se at alt i tarfilen holdes i en katalog som heter Ukulele Songs, og i den katalogen er det filer og andre kataloger.

Vi kan se at Ukulele Songs-katalogen inneholder kataloger som heter Tilfeldige sanger, Ramones og muligheter.

For å trekke ut alle filene fra en katalog i en tar-fil, bruk følgende kommando. Vær oppmerksom på at banen er anbrakt med anførselstegn fordi det er mellomrom i banen.

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

For å trekke ut en enkelt fil, oppgi banen og navnet på filen.

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

Du kan trekke ut et utvalg av filer ved hjelp av jokertegn, der * representerer en hvilken som helst tegnstreng og ? representerer et enkelt tegn. Bruk av jokertegn krever bruk av alternativet --wildcards.

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

Pakke ut filer uten å pakke ut kataloger

Hvis du ikke vil at katalogstrukturen i tarfilen skal gjenskapes på harddisken, bruker du alternativet --strip-components. --strip-components -alternativet krever en numerisk parameter. Tallet representerer hvor mange nivåer av kataloger som skal ignoreres. Filer fra de ignorerte katalogene blir fortsatt hentet ut, men katalogstrukturen replikeres ikke på harddisken din.

Hvis vi spesifiserer --strip-components=1 med vårt eksempel på tar-fil, Ukulele Songs øverste katalog i tarfilen opprettes ikke på harddisken. Filene og katalogene som ville blitt ekstrahert til den katalogen blir hentet i målkatalogen.

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

Det er bare to nivåer av katalog som hekker i vårt eksempel på tar-fil. Så hvis vi bruker --strip-components=2, blir alle filene hentet ut i målkatalogen, og ingen andre kataloger blir opprettet.

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

Hvis du ser på Linux-mansiden, vil du se at tar må være en god kandidat for tittelen «kommando som har flest kommandolinjealternativer.» Heldigvis, for å tillate oss å trekke ut filer fra .tar.gz og tar.bz2 filer med en god grad av detaljert kontroll, trenger vi bare å huske en håndfull av disse alternativene.

Dave McKay
Dave McKay brukte først datamaskiner når stanset papirbånd var i moten, og han har programmert siden Etter over 30 år i IT-bransjen er han nå en heltids teknologijournalist. I løpet av karrieren har han jobbet som frilans programmerer, leder for et internasjonalt programvareutviklingsteam, prosjektleder for IT-tjenester og sist , som databeskyttelsesoffiser. Dave er en Linux-evangelist og åpen kildekode-talsmann. Les Full Bio «

Leave a Reply

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *