Sådan udpakkes filer fra en .tar.gz- eller .tar.bz2-fil på Linux

Tar-filer er komprimerede arkiver. Du vil støde på dem ofte, mens du bruger en Linux-distribution som Ubuntu eller endda mens du bruger terminalen på macOS. Sådan udtrækkes – eller fjernes – indholdet af en tar-fil, også kendt som en tarball.

Hvad betyder .tar.gz og .tar.bz2?

Filer med filtypenavnet .tar.gz eller .tar.bz2 er komprimerede arkivfiler. En fil med blot filtypenavnet .tar er ukomprimeret, men de vil være meget sjældne.

.tar-delen af ​​filtypenavnet står for tape archive, og er grunden til, at begge disse filtyper kaldes tar-filer. Tar-filer går helt tilbage til 1979, da tar-kommandoen blev oprettet for at give systemadministratorer mulighed for at arkivere filer på bånd. Fyrre år senere bruger vi stadig tar-kommandoen til at udpakke tar-filer til vores harddiske. Nogen et eller andet sted bruger sikkert stadig tjære med tape.

.gz- eller .bz2-udvidelsessuffikset angiver, at arkivet er blevet komprimeret ved at bruge enten gzip- eller bzip2-komprimeringsalgoritmen. Tar-kommandoen fungerer med glæde med begge filtyper, så det er ligegyldigt, hvilken komprimeringsmetode der blev brugt – og den burde være tilgængelig overalt, hvor du har en Bash-shell. Du skal bare bruge de relevante tar-kommandolinjeindstillinger.

Udpakning af filer fra Tar-filer

Lad os sige, at du har downloadet to filer med noder. Den ene fil hedder ukulele_songs.tar.gz, den anden hedder guitar_songs.tar.bz2. Disse filer er i mappen Downloads.

  Sådan bruger du traceroute-kommandoen på Linux

Lad os trække ukulele-sangene ud:

tar -xvzf ukulele_songs.tar.gz

Efterhånden som filerne udpakkes, vises de i terminalvinduet.

Kommandolinjeindstillingerne vi brugte er:

-x: Udpak, hent filerne fra tar-filen.
-v: Udførligt, skriv filerne efterhånden som de udpakkes.
-z: Gzip, brug gzip til at dekomprimere tar-filen.
-f: Fil, navnet på den tar-fil, vi ønsker, at tar skal arbejde med. Denne mulighed skal efterfølges af navnet på tar-filen.

List filerne i mappen med ls, og du vil se, at der er oprettet en mappe kaldet Ukulele-sange. De udpakkede filer er i den mappe. Hvor kom denne mappe fra? Den var indeholdt i tar-filen og blev udpakket sammen med filerne.

Lad os nu udtrække guitarsangene. For at gøre dette bruger vi næsten nøjagtig den samme kommando som før, men med en vigtig forskel. .bz2-udvidelsessuffikset fortæller os, at det er blevet komprimeret ved hjælp af bzip2-kommandoen. I stedet for at bruge muligheden-z (gzip), bruger vi muligheden -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Endnu en gang vises filerne til terminalen, efterhånden som de udpakkes. For at være klar, var kommandolinjeindstillingerne, vi brugte med tar til .tar.bz2-filen:

-x: Udpak, hent filerne fra tar-filen.
-v: Udførligt, skriv filerne efterhånden som de udpakkes.
-j: Bzip2, brug bzip2 til at dekomprimere tar-filen.
-f: Fil, navnet på den tar-fil, vi ønsker, at tar skal arbejde med.

Hvis vi viser filerne i download-mappen, vil vi se, at en anden mappe kaldet Guitar Songs er blevet oprettet.

Vælger, hvor filerne skal udpakkes

Hvis vi ønsker at udpakke filerne til en anden placering end den aktuelle mappe, kan vi angive en målmappe ved hjælp af -C (specificeret mappe).

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

Når vi kigger i vores bibliotek med dokumenter/sange, kan vi se, at biblioteket med guitarsange er blevet oprettet.

  Sådan aktiverer du Root SSH-login på Linux

Bemærk, at målbiblioteket allerede skal eksistere, tar vil ikke oprette det, hvis det ikke er til stede. Hvis du har brug for at oprette en mappe og få tar udtrække filerne i det hele i én kommando, kan du gøre det som følger:

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

Valgmuligheden -p (forældre) får mkdir til at oprette alle overordnede mapper, som er påkrævet, hvilket sikrer, at målmappen er oprettet.

Kig ind i tjærefiler, før du udpakker dem

Indtil videre har vi bare taget et spring af tro og udtrukket filerne, der ikke er set. Du må gerne kigge, før du springer. Du kan gennemgå indholdet af en tar-fil, før du udpakker den ved at bruge -t (liste)-indstillingen. Det er normalt praktisk at røre output gennem less-kommandoen.

tar -tf ukulele_songs.tar.gz | less

Bemærk, at vi ikke behøver at bruge -z-indstillingen for at vise filerne. Vi behøver kun at tilføje -z-indstillingen, når vi udpakker filer fra en .tar.gz-fil. Ligeledes behøver vi ikke -j-indstillingen for at liste filerne i en tar.bz2-fil.

Når vi ruller gennem outputtet, kan vi se, at alt i tar-filen opbevares i en mappe kaldet Ukulele Songs, og i den mappe er der filer og andre mapper.

Vi kan se, at biblioteket Ukulele-sange indeholder mapper kaldet Random Songs, Ramones og Possibles.

  Sådan bruges kommandoen af ​​Linux-typen

For at udtrække alle filerne fra en mappe i en tar-fil, brug følgende kommando. Bemærk, at stien er pakket ind i anførselstegn, fordi der er mellemrum i stien.

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

For at udpakke en enkelt fil skal du angive stien og navnet på filen.

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

Du kan udtrække et udvalg af filer ved at bruge jokertegn, hvor * repræsenterer enhver streng af tegn og ? repræsenterer ethvert enkelt tegn. Brug af jokertegn kræver brug af –jokertegn.

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

Udpakning af filer uden at udpakke mapper

Hvis du ikke ønsker, at mappestrukturen i tar-filen skal genskabes på din harddisk, skal du bruge –strip-components-indstillingen. Indstillingen –strip-components kræver en numerisk parameter. Tallet repræsenterer, hvor mange niveauer af mapper der skal ignoreres. Filer fra de ignorerede mapper udpakkes stadig, men mappestrukturen replikeres ikke på din harddisk.

Hvis vi angiver –strip-components=1 med vores eksempel tar-fil, oprettes Ukulele Songs øverste mappe i tar-filen ikke på harddisken. De filer og mapper, der ville være blevet udtrukket til det pågældende bibliotek, udpakkes i målbiblioteket.

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

Der er kun to niveauer af mappeindlejring i vores eksempel tar-fil. Så hvis vi bruger –strip-components=2, udpakkes alle filerne i målmappen, og der oprettes ingen andre mapper.

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

Hvis du ser på Linux man-side du vil se, at tar skal være en god kandidat til titlen “kommando med flest kommandolinjemuligheder.” Heldigvis, for at tillade os at udtrække filer fra .tar.gz- og tar.bz2-filer med en god grad af granulær kontrol, behøver vi kun at huske en håndfuld af disse muligheder.