- Dave McKay
@TheGurkha
- 5 april 2019, 08:00 EDT
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.
.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.
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/
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
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/"
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
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.