Jag använder det här kommandot på en 5GB arkiv
tar -zxvf archive.tar.gz /folder/in/archive
är detta rätt sätt att göra detta? Det verkar ta en evighet utan kommandoradsutgång …
Kommentarer
Svar
tar
lagrar relativa sökvägar som standard . GNU tjära säger till och med så om du försöker lagra en absolut sökväg:
tar -cf foo.tar /home/foo tar: Removing leading `/" from member names
Om du behöver extrahera en viss mapp, ta en titt på vad som finns i tarfilen:
tar -tvf foo.tar
Och notera det exakta filnamnet. I fallet med min foo.tar
-fil kunde jag extrahera /home/foo/bar
genom att säga:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Så nej, det sätt du skrev upp är inte (nödvändigtvis) rätt sätt att göra det. Du måste utelämna det ledande snedstrecket. Om du vill simulera absoluta vägar, gör cd /
först och se till att du är superanvändaren. Det gör också detsamma:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Det finns mycket uppenbara, goda skäl till varför tar
konverterar banor till relativa. En är möjligheten att återställa ett arkiv på andra platser än dess ursprungliga källa. annat är säkerhet. Du kan extrahera ett arkiv, förvänta dig att filerna visas i din nuvarande arbetskatalog och istället skriva över systemfiler (eller ditt eget arbete) någon annanstans av misstag.
Obs! Om du använder -P
alternativ, tar
kommer arkivera absoluta vägar. Så det lönar sig alltid att kontrollera innehållet i stora arkiv innan du extraherar.
Kommentarer
-
--strip-components=N
kan vara användbart för vissa här. - i mitt fall var det nödvändigt att skriva
./foldername/
istället för , antar jag att det berodde på att när jag skapade tjäran skapade jag den medtar -cvf santi.tar ./*
och när jag " listade " tjäran det är vad den sadrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
- Och om
.gz
? - @PeterKrauss ändra
-xvf
till-xzvf
(lägga till-z
-alternativ) och uppenbarligenfoo.tar
tillfoo.tar.gz
eller vad ditt arkiv heter. Detsamma gäller för-j
(bz2) och i vissa senaste versioner-J
(xz). Annars fungerar också en pipeline somzcat foo.tar.gz | tar -xvf - …
. - Och kom ihåg att om du är trött på all den detaljerade produktionen under extraktion hoppar du bara över
v
i alla exemplen. Exempelvistar -tf foo.tar
ochtar -xf foo.tar ...
.
tar
är medcat /proc/$(pidof tar)/fdinfo/0
(anpassa kommandot om du har mer än entar
processen körs).folder/folder2/
vann ' t arbete.