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

  • Dave McKay

    @TheGurkha

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

Tar-filer 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 udpakkes – eller fjerner du – indholdet af en tar-fil, også kendt som en tarball.

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

Filer, der har en .tar.gz eller en .tar.bz2 udvidelse er komprimerede arkivfiler. En fil med bare en .tar udvidelse er ukomprimeret, men disse er meget sjældne.

.tar -delen af filtypenavnet står for båndarkiv og er årsagen til, at begge disse filtyper kaldes tar-filer. Tjærefiler dateres helt tilbage til 1979, da kommandoen tar blev oprettet for at tillade systemadministratorer at arkivere filer på båndet. Fyrre år senere bruger vi stadig kommandoen tar til at udpakke tar-filer til vores harddiske. Nogen et sted bruger sandsynligvis stadig tar med tape.

Annonce

.gz eller .bz2 udvidelses-suffiks angiver, at arkivet er komprimeret ved hjælp af enten gzip eller bzip2 komprimeringsalgoritme. Kommandoen tar fungerer lykkeligt med begge filtyper, så det betyder ikke noget, hvilken komprimeringsmetode der blev brugt – og den skal være tilgængelig overalt, hvor du har en Bash-skal. Du skal bare bruge de relevante tar kommandolinjemuligheder.

Uddrag af filer fra Tar-filer

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

Lad os udtrække ukulele-sangene:

tar -xvzf ukulele_songs.tar.gz 

Når filerne udpakkes, 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 tarfilen.
  • -f: File, navnet på tjæren fil, vi vil have tar til at arbejde med. Denne mulighed skal efterfølges af tarfilens navn.

Angiv filerne i biblioteket med ls, og du vil se, at en katalog er oprettet kaldet Ukulele Songs. De udpakkede filer findes i denne mappe. Hvor kom denne mappe fra? Den var indeholdt i tar -filen og blev ekstraheret sammen med filerne.

Annonce

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. .bz2 -udvidelsessuffikset fortæller os, at det er komprimeret ved hjælp af bzip2-kommandoen. I stedet for at bruge indstillingen -z (gzip) bruger vi indstillingen -j (bzip2).

tar -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 tar til .tar.bz2 -filen:

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

Vælger hvor filerne skal udpakkes til

Hvis vi vil udpakke filerne til et sted bortset fra den aktuelle mappe, kan vi angive en målmappe ved hjælp af indstillingen -C (specificeret mappe).

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

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

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

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

Indstillingen -p (forældre) får mkdir til at oprette eventuelle forældrekataloger, der kræves, hvilket sikrer målmappen er oprettet.

At kigge ind i tjærefiler, før vi udpakker dem

Indtil videre har vi netop taget et spring i troen og udpakket filerne usynlige. Du vil måske gerne se, før du springer. Du kan gennemse indholdet af en tar -fil, før du udpakker den ved hjælp af -t (liste).Det er normalt bekvemt at føre output gennem kommandoen less.

tar -tf ukulele_songs.tar.gz | less
Annonce

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

Rul gennem output kan vi se, at alt i tar-filen opbevares i en mappe, der hedder Ukulele Songs, og i denne mappe er der filer og andre kataloger.

Vi kan se, at Ukulele Songs-kataloget indeholder kataloger kaldet Tilfældige sange, 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/"
Annonce

For at udpakke en enkelt fil, angiv 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 ethvert enkelt tegn. Brug af jokertegn kræver brug af indstillingen --wildcards.

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

Udpakning af filer uden udpakning af mapper

Hvis du ikke ønsker, at katalogstrukturen i tarfilen skal genskabes på din harddisk, skal du bruge indstillingen --strip-components. Indstillingen --strip-components 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 angiver --strip-components=1 med vores eksempel på tar-fil, Ukulele Songs øverste katalog i tar-filen oprettes ikke på harddisken. De filer og mapper, der ville være blevet ekstraheret til den mappe, udvindes i målmappen.

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

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-components=2

Hvis du ser på Linux-mandsiden, vil du se, at tar skal være en god kandidat til titlen “kommando med de fleste 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 huske en håndfuld af disse muligheder.

Dave McKay
Dave McKay brugte først computere, når stanset papirbånd var på mode, og han har programmeret lige siden Efter over 30 år i IT-branchen er han nu fuldtids teknologijournalist. I løbet af sin karriere har han arbejdet som freelance programmør, leder af et internationalt softwareudviklingsteam, projektleder for IT-tjenester og senest , som databeskyttelsesofficer. Dave er Linux-evangelist og open source-advokat. Læs Full Bio “

Leave a Reply

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *