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

Tjærefiler er komprimerede arkiver. Du støder ofte på dem, mens du bruger en Linux-distribution som Ubuntu eller endda mens du bruger terminalen på macOS. Sådan udtrækkes - eller fjerner - indholdet af en tar-fil, også kendt som en tarball.

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

Filer, der har en .tar.gzeller en .tar.bz2udvidelse, er komprimerede arkivfiler. En fil med kun en .tarudvidelse er ukomprimeret, men de vil være meget sjældne.

Den .tardel af filtypenavnet står for t ape ar chive og er årsagen til, at begge disse filtyper kaldes tar-filer. Tjærefiler dateres helt tilbage til 1979, da tarkommandoen blev oprettet for at tillade systemadministratorer at arkivere filer på bånd. Fyrre år senere bruger vi stadig tarkommandoen til at udtrække tarfiler til vores harddiske. Nogen et sted bruger sandsynligvis stadig tarmed tape.

Den  .gzeller .bz2udvidelse suffikset indikerer, at arkivet er blevet komprimeret, enten ved hjælp af gzipeller bzip2komprimeringsalgoritme. Den tarkommando vil arbejde lykkeligt med begge typer af filen, så det er ligegyldigt hvilken komprimering metode blev anvendt-og det bør være tilgængelig overalt du har en Bash shell. Du skal bare bruge de relevante tar kommandolinjemuligheder.

Uddrag af filer fra tarfiler

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

Lad os udtrække ukulele-sangene:

tjære -xvzf ukulele_songs.tar.gz 

Når filerne ekstraheres, vises de i terminalvinduet.

De kommandolinjemuligheder, vi brugte, er:

  • -x : Uddrag, hent filerne fra tarfilen.
  • -v : Omfattende, anfør filerne, når de ekstraheres.
  • -z : Gzip, brug gzip til at dekomprimere tar-filen.
  • -f : File, navnet på den tar-fil, vi vil tararbejde med. Denne mulighed skal følges af navnet på tarfilen.

Angiv filerne i kataloget med, lsog du vil se, at der er oprettet en mappe, der hedder Ukulele Songs. De udpakkede filer findes i denne mappe. Hvor kom denne mappe fra? Den var indeholdt i tarfilen og blev ekstraheret sammen med filerne.

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

tjære -xvjf guitar_songs.tar.bz2

Endnu en gang vises filerne på terminalen, når de ekstraheres. For at være klar var kommandolinjemulighederne, vi brugte med tartil .tar.bz2filen:

  • -x : Uddrag, hent filerne fra tarfilen.
  • -v : Omfattende, anfør filerne, når de ekstraheres.
  • -j : Bzip2, brug bzip2 til at dekomprimere tar-filen.
  • -f : Fil, navnet på den tjærefil, som vi ønsker, at tjære skal arbejde med.

Hvis vi viser filerne i Download-biblioteket, ser vi, at der er oprettet en anden mappe, der hedder Guitar Songs.

Vælge, hvor filerne skal udpakkes

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

tar -xvjf guitar_songs.tar.gz -C ~ / Dokumenter / Sange /

Når vi kigger i vores Dokumenter / sange-katalog, ser vi, at Guitar Songs-mappen er oprettet.

Bemærk, at målkataloget allerede skal eksistere, taropretter det ikke, hvis det ikke er til stede. Hvis du har brug for at oprette en mappe og have tarudpakket filerne til det hele i en kommando, kan du gøre det som følger:

mkdir -p ~ / Dokumenter / Sange / Downloadet && tar -xvjf guitar_songs.tar.gz -C ~ / Dokumenter / Sange / Downloadet /

Indstillingen -p (forældre) får mkdirtil at oprette de forældrekataloger, der kræves, hvilket sikrer, at målmappen oprettes.

Kig ind i tjærefiler, inden du udpakker dem

Indtil videre har vi netop taget et trosspring og hentet filerne usynlige. Du vil måske gerne se, før du springer. Du kan gennemse indholdet af en tarfil, før du udpakker den ved hjælp af indstillingen -t(liste). Det er normalt praktisk at røre output gennem lesskommandoen.

tar -tf ukulele_songs.tar.gz | mindre

Bemærk, at vi ikke behøver at bruge -zmuligheden for at liste filerne. Vi behøver kun at tilføje -zindstillingen, når vi udpakker filer fra en .tar.gzfil. Ligeledes har vi ikke brug for -jmuligheden for at liste filerne i en tar.bz2fil.

Når vi ruller gennem output, kan vi se, at alt i tar-filen opbevares i en mappe, der hedder Ukulele Songs, og inden for denne mappe er der filer og andre mapper.

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

Brug følgende kommando for at udpakke alle filerne fra et bibliotek i en tar-fil. Bemærk, at stien er pakket med 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 hjælp af jokertegn, hvor *repræsenterer en hvilken som helst tegnstreng og ?repræsenterer et enkelt tegn. Brug af jokertegn kræver brug af --wildcardsindstillingen.

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

Uddrag af filer uden udpakning af mapper

Hvis du ikke ønsker, at katalogstrukturen i tar-filen skal genskabes på din harddisk, skal du bruge --strip-componentsindstillingen. Den --strip-componentsmulighed kræver en numerisk parameter. Antallet repræsenterer hvor mange niveauer af kataloger der skal ignoreres. Filer fra de ignorerede mapper ekstraheres stadig, men bibliotekstrukturen replikeres ikke på din harddisk.

Hvis vi specificerer --strip-components=1med vores eksempel på tar-fil, oprettes Ukulele Songs øverste bibliotek i tar-filen ikke på harddisken. De filer og mapper, der ville være blevet ekstraheret til den mappe, udpakkes i målmappen.

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

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

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

Hvis du ser på Linux-mandsiden, kan du se, at det tarskal være en god kandidat til titlen "kommando med de fleste kommandolinjemuligheder." Heldigvis er det kun nødvendigt at huske en håndfuld af disse muligheder for at tillade os at udtrække filer fra .tar.gzog tar.bz2filer med en god grad af granulær kontrol.