Tar-filer er i bunn og grunn komprimerte arkivmapper. Disse filtypene er vanlige, spesielt hvis du bruker Linux-distribusjoner som Ubuntu eller jobber i terminalen på macOS. Her skal vi gå gjennom hvordan du pakker ut, eller henter ut innholdet, fra en tar-fil, også ofte kalt en tarball.
Hva skjuler seg bak .tar.gz og .tar.bz2?
Når du ser filendelser som .tar.gz eller .tar.bz2, betyr det at du har å gjøre med komprimerte arkivfiler. En fil som kun slutter på .tar er ukomprimert, men dette er sjeldent.
Forkortelsen .tar står for «tape archive», og det er derfor begge disse filtypene går under fellesbetegnelsen tar-filer. Tar-filer har røtter tilbake til 1979, da tar-kommandoen ble utviklet for at systemadministratorer kunne arkivere filer på magnetbånd. Selv i dag, over førti år senere, bruker vi fortsatt tar-kommandoen for å hente ut tar-filer på harddiskene våre. Det finnes nok fortsatt noen som bruker tar med magnetbånd også.
Endelsene .gz eller .bz2 signaliserer at arkivet er komprimert med enten gzip- eller bzip2-algoritmen. Tar-kommandoen håndterer begge disse filtypene uten problemer, så det spiller ingen rolle hvilken komprimeringsmetode som er brukt. Denne kommandoen er normalt tilgjengelig overalt hvor du har et Bash-skall. Det eneste du trenger er å bruke de korrekte kommandolinjealternativene for tar.
Utpakking av filer fra Tar-filer
La oss anta at du har lastet ned to filer med noter, «ukulele_songs.tar.gz» og «guitar_songs.tar.bz2», begge lagret i nedlastingsmappen din.
La oss starte med å pakke ut ukulele-sangene:
tar -xvzf ukulele_songs.tar.gz
Etter hvert som filene pakkes ut, vil du se fremdriften i terminalvinduet.
Kommandolinjealternativene vi har brukt her betyr:
-x: Pakk ut – henter filene fra tar-filen.
-v: Utførlig – viser filnavnene mens de pakkes ut.
-z: Gzip – bruker gzip for å dekomprimere tar-filen.
-f: Fil – angir navnet på tar-filen som tar skal jobbe med. Dette alternativet må alltid følges av filnavnet.
Hvis du nå sjekker innholdet i mappen med kommandoen `ls`, vil du se en ny mappe kalt «Ukulele Songs». De utpakkede filene befinner seg i denne mappen. Hvor kom denne mappen fra? Den var inkludert i selve tar-filen og ble pakket ut sammen med filene.
La oss nå pakke ut gitarsangene. Vi bruker nesten den samme kommandoen som tidligere, men med en viktig endring. Filendelsen .bz2 forteller oss at denne filen er komprimert ved hjelp av bzip2-kommandoen. Derfor bruker vi alternativet `-j` (bzip2) istedenfor `-z` (gzip).
tar -xvjf guitar_songs.tar.bz2
Også her vil filene listes opp i terminalen under utpakkingen. For å oppsummere, de kommandolinjealternativene vi brukte med tar for .tar.bz2-filen var:
-x: Pakk ut – henter filene fra tar-filen.
-v: Utførlig – lister filene etter hvert som de pakkes ut.
-j: Bzip2 – bruker bzip2 for å dekomprimere tar-filen.
-f: Fil – angir navnet på tar-filen som skal behandles.
Ved å vise filene i nedlastingsmappen, vil du nå se at en ny mappe med navnet «Guitar Songs» har blitt opprettet.
Velg hvor filene skal pakkes ut
Dersom du ønsker å pakke ut filene til et annet sted enn den aktuelle mappen, kan du angi en målmappe ved å bruke `-C` (spesifisert katalog) alternativet.
tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
Når vi sjekker «Dokumenter/Sanger» mappen, vil vi se at mappen for Gitarsanger nå finnes der.
Merk at målmappen må eksistere fra før. Tar vil ikke opprette den hvis den ikke allerede finnes. Hvis du trenger å opprette en mappe og samtidig pakke ut filer til den, kan du utføre dette i én operasjon:
mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/
Alternativet `-p` (foreldre) instruerer `mkdir` til å opprette alle nødvendige overordnede mapper, og sørger for at målmappen opprettes.
Forhåndsvisning av innhold i Tar-filer
Fram til nå har vi bare pakket ut filer uten å undersøke innholdet først. Det kan være lurt å sjekke før man pakker ut. Du kan se gjennom innholdet i en tar-fil ved å bruke `-t` (liste) alternativet. Det er ofte praktisk å sende utdataene gjennom kommandoen `less`.
tar -tf ukulele_songs.tar.gz | less
Legg merke til at vi ikke trenger å bruke `-z`-alternativet for å liste filene. Dette er kun nødvendig når vi pakker ut filer fra en .tar.gz-fil. Tilsvarende trenger vi ikke `-j`-alternativet for å liste innholdet i en tar.bz2-fil.
Ved å bla gjennom utdataene kan vi se at alt innholdet i tar-filen ligger i en mappe kalt «Ukulele Songs», og at det er flere filer og mapper i den.
Vi kan se at mappen «Ukulele Songs» inneholder undermapper som «Random Songs», «Ramones» og «Possibles».
For å pakke ut alle filer fra en bestemt undermappe i en tar-fil, kan du bruke følgende kommando. Merk at stien er omsluttet av anførselstegn fordi den inneholder mellomrom.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
For å pakke ut en enkelt fil, må du spesifisere hele banen til filen.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
Du kan også pakke ut filer ved hjelp av jokertegn, der `*` representerer en hvilken som helst streng av tegn, og `?` representerer et enkelt tegn. Bruk av jokertegn krever at du legger til `–wildcards`-alternativet.
tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"
Utpakking uten å gjenskape mappestrukturen
Dersom du ikke ønsker å gjenskape mappestrukturen i tar-filen på din egen disk, kan du bruke alternativet `–strip-components`. Dette alternativet krever en numerisk verdi. Tallet angir hvor mange nivåer av mapper som skal ignoreres. Filer fra de ignorerte mappene pakkes ut, men mappestrukturen blir ikke gjenskapt på disken.
Hvis vi bruker `–strip-components=1` i vårt eksempel, vil ikke den øverste «Ukulele Songs» mappen opprettes. Filene og mappene som ellers ville havnet der vil istedenfor pakkes ut direkte i målmappen.
tar -xvzf ukulele_songs.tar.gz --strip-components=1
Det er to nivåer med undermapper i eksempelet vårt. Hvis vi bruker `–strip-components=2`, vil alle filene pakkes ut direkte i målmappen, uten at det opprettes noen ekstra mapper.
tar -xvzf ukulele_songs.tar.gz --strip-components=2
Hvis du ser på Linux manualsiden for tar, vil du se at den er en sterk kandidat til tittelen «kommando med flest kommandolinjealternativer». Heldigvis er det bare en håndfull av disse alternativene du trenger for å pakke ut filer fra .tar.gz- og .tar.bz2-filer med god kontroll.