Hur man extraherar filer från en .tar.gz- eller .tar.bz2-fil på Linux

  • Dave McKay

    @TheGurkha

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

Tar-filer är komprimerade arkiv. Du kommer att stöta på dem ofta när du använder en Linux-distribution som Ubuntu eller till och med när du använder terminalen på macOS. Så här extraherar du – eller tar bort – innehållet i en tar-fil, även känd som en tarball.

Vad betyder .tar.gz och .tar.bz2 ??

Filer som har en .tar.gz eller en .tar.bz2 förlängning är komprimerade arkivfiler. En fil med bara ett .tar -tillägg är okomprimerat, men de är mycket sällsynta.

.tar -delen av filtillägget står för bandarkiv och är anledningen till att båda dessa filtyper kallas tarfiler. Tjärfiler dateras ända tillbaka till 1979 när kommandot tar skapades för att systemadministratörer ska kunna arkivera filer på bandet. Fyrtio år senare använder vi fortfarande kommandot tar för att extrahera tarfiler till våra hårddiskar. Någon någonstans använder antagligen fortfarande tar med tejp.

Annons

.gz eller .bz2 förlängningssuffix indikerar att arkivet har komprimerats med antingen gzip eller bzip2 kompressionsalgoritm. Kommandot tar fungerar lyckligt med båda filtyperna, så det spelar ingen roll vilken komprimeringsmetod som användes – och den ska vara tillgänglig överallt där du har ett Bash-skal. Du behöver bara använda lämpliga tar kommandoradsalternativ.

Extrahera filer från Tar-filer

Anta att du har laddat ner två filer av noter. En fil heter ukulele_songs.tar.gz, den andra heter guitar_songs.tar.bz2. Dessa filer finns i nedladdningskatalogen.

Låt oss extrahera ukulele-låtar:

tar -xvzf ukulele_songs.tar.gz 

När filerna extraheras listas de i terminalfönstret.

De kommandoradsalternativ som vi använde är:

  • -x: Extrahera, hämta filerna från tarfilen.
  • – v: Verbose, lista filerna när de extraheras.
  • -z: Gzip, använd gzip för att dekomprimera tarfilen.
  • -f: File, namnet på tjäran fil vi vill att tar ska fungera med. Detta alternativ måste följas av tarfilens namn.

Lista upp filerna i katalogen med ls så ser du att en katalog har skapats som heter Ukulele Songs. De extraherade filerna finns i den katalogen. Var kom den här katalogen ifrån? Den ingick i tar -filen och extraherades tillsammans med filerna.

Annons

Låt oss nu extrahera gitarrlåtarna. För att göra detta använder vi nästan exakt samma kommando som tidigare men med en viktig skillnad. .bz2 förlängningssuffixet berättar att det har komprimerats med kommandot bzip2. Istället för att använda alternativet -z (gzip) använder vi alternativet -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Återigen listas filerna till terminalen när de extraheras. För att vara tydlig var kommandoradsalternativen vi använde med tar för .tar.bz2 -filen:

Om vi listar filerna i nedladdningskatalogen ser vi att en annan katalog som heter Guitar Songs har skapats.

Välja var filerna ska extraheras till

Om vi vill extrahera filerna till en plats annat än den aktuella katalogen kan vi ange en målkatalog med alternativet -C (angiven katalog).

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

Om vi tittar i katalogen Dokument / låtar ser vi att katalogen för gitarrlåtar har skapats.

Observera att målkatalogen redan måste finnas, tar skapar inte det om det inte finns. Om du behöver skapa en katalog och tar extraherar filerna till allt i ett kommando kan du göra det enligt följande:

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

Alternativet -p (föräldrar) skapar mkdir att skapa eventuella överordnade kataloger som krävs, vilket säkerställer målkatalogen skapas.

Titta inuti tjärfiler innan vi extraherar dem

Hittills har vi precis tagit ett hopp av tro och extraherat filerna synliga osedda. Du kanske vill titta innan du hoppar. Du kan granska innehållet i en tar -fil innan du extraherar den med alternativet -t (lista).Det är vanligtvis bekvämt att leda utgången genom kommandot less.

tar -tf ukulele_songs.tar.gz | less
Annons

Observera att vi inte behöver använda alternativet -z för att lista filerna. Vi behöver bara lägga till alternativet -z när vi extraherar filer från en .tar.gz -fil. På samma sätt behöver vi inte alternativet -j för att lista filerna i en tar.bz2 -fil.

Bläddra igenom utdata kan vi se att allt i tar-filen finns i en katalog som heter Ukulele Songs, och i den katalogen finns filer och andra kataloger.

Vi kan se att Ukulele Songs-katalogen innehåller kataloger som heter Slumpmässiga låtar, Ramones och Possibles.

För att extrahera alla filer från en katalog i en tar-fil, använd följande kommando. Observera att sökvägen är insvept i citattecken eftersom det finns mellanslag i sökvägen.

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

För att extrahera en enda fil, ange sökvägen och namnet på filen.

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

Du kan extrahera ett urval av filer med jokertecken, där * representerar alla teckensträngar och ? representerar varje enskilt tecken. För att använda jokertecken krävs alternativet --wildcards.

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

Extrahera filer utan att extrahera kataloger

Om du inte vill att katalogstrukturen i tarfilen ska återskapas på hårddisken använder du alternativet --strip-components. Alternativet --strip-components kräver en numerisk parameter. Siffran representerar hur många nivåer av kataloger som ska ignoreras. Filer från de ignorerade katalogerna extraheras fortfarande, men katalogstrukturen replikeras inte på din hårddisk.

Om vi anger --strip-components=1 med vårt exempel på tarfilen, Ukulele Songs översta katalog inom tarfilen skapas inte på hårddisken. De filer och kataloger som skulle ha extraherats till den katalogen extraheras i målkatalogen.

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

Det finns bara två nivåer av katalog som häckar i vårt exempel på tar-fil. Så om vi använder --strip-components=2 extraheras alla filer i målkatalogen och inga andra kataloger skapas.

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

Om du tittar på Linux-mansidan ser du att tar måste vara en bra kandidat för titeln ”kommando med flest kommandoradsalternativ.” Tack och lov, för att vi ska kunna extrahera filer från .tar.gz och tar.bz2 filer med en bra grad av detaljerad kontroll behöver vi bara komma ihåg en handfull av dessa alternativ.

Dave McKay – Dave McKay använde första datorer när stansat papperstejp var i modet, och han har programmerat sedan dess Efter mer än 30 år inom IT-branschen är han nu en heltidsteknikjournalist. Under sin karriär har han arbetat som frilansande programmerare, chef för ett internationellt team för utveckling av programvara, projektledare för IT-tjänster och senast , som dataskyddsombud. Dave är en Linux-evangelist och förespråkare för öppen källkod. Läs hela bio ”

Leave a Reply

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *