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=Nkan 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
-xvftill-xzvf(lägga till-z-alternativ) och uppenbarligenfoo.tartillfoo.tar.gzeller 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
vi alla exemplen. Exempelvistar -tf foo.tarochtar -xf foo.tar ....
tarär medcat /proc/$(pidof tar)/fdinfo/0(anpassa kommandot om du har mer än entarprocessen körs).folder/folder2/vann ' t arbete.