Haben Sie einen absoluten oder relativen Pfad verwendet? Sollte relativ sein, ansonsten sieht es richtig aus. Wie lange hast du es laufen lassen und wie gut ist dein System? Es dauert mindestens einige Minuten auf einer schnellen Maschine. Möglicherweise eine Stunde oder länger? Ich führe gerade einen Test durch.
Kevin
Ja, es war nach ~ 1 Stunde beendet, aber der absolute Pfad war falsch, Sie hatten Recht.
Garrett Hall
5
Unter Linux können Sie beobachten, wie weit das Archiv tarmit ist cat /proc/$(pidof tar)/fdinfo/0(passen Sie den Befehl an, wenn mehr als ein tarProzess ausgeführt wird).
Gilles
Der wichtige Teil ist auch kein abschließender Schrägstrich. Verwenden folder/folder2/wird nicht funktionieren.
Marki555
Antworten:
145
tarspeichert standardmäßig relative Pfade . GNU tar sagt dies sogar, wenn Sie versuchen, einen absoluten Pfad zu speichern:
tar -cf foo.tar /home/foo
tar:Removing leading `/' from member names
Wenn Sie einen bestimmten Ordner extrahieren müssen, schauen Sie sich die Tar-Datei an:
tar -tvf foo.tar
Und notiere dir den genauen Dateinamen. Im Falle meiner foo.tarAkte könnte ich extrahieren, /home/foo/barindem ich sage:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Nein, die Art und Weise, wie Sie gepostet haben, ist (notwendigerweise) nicht die richtige. Sie müssen den führenden Schrägstrich weglassen. Wenn Sie absolute Pfade simulieren möchten, müssen Sie cd /zunächst sicherstellen, dass Sie der Superuser sind. Dies macht auch das Gleiche:
tar -C /-xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Es gibt sehr offensichtliche gute Gründe, warum tarPfade in relative konvertiert werden. Eine Möglichkeit besteht darin, ein Archiv an einem anderen Ort als der ursprünglichen Quelle wiederherzustellen. Das andere ist Sicherheit. Sie könnten ein Archiv extrahieren, erwarten, dass seine Dateien in Ihrem aktuellen Arbeitsverzeichnis erscheinen, und stattdessen versehentlich Systemdateien (oder Ihre eigene Arbeit) an einer anderen Stelle überschreiben.
Hinweis: Wenn Sie diese -POption verwenden, tarwerden absolute Pfade archiviert. Es lohnt sich also immer, den Inhalt großer Archive vor dem Extrahieren zu überprüfen.
--strip-components=Nkann hier für einige nützlich sein.
Acumenus
2
In meinem Fall war es notwendig zu schreiben, ./foldername/anstatt foldername, ich vermute, dass es war, weil, als ich den Teer erstellte, mit dem ich ihn erstellte, tar -cvf santi.tar ./*und als ich den Teer "auflistete", das ist, was es sagtedrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
Santiago arizti
1
Und ungefähr .gz?
Peter Krauss
1
@PeterKrauss wechseln -xvfzu -xzvf( -zOption hinzufügen ) und natürlich foo.tarzu foo.tar.gzoder wie auch immer Ihr Archiv heißt. Dasselbe gilt für -j(bz2) und für einige neuere Versionen -J(xz). Ansonsten zcat foo.tar.gz | tar -xvf - …funktioniert eine Pipeline wie auch.
Alexios
Und denken Sie daran, wenn Sie die ausführliche Ausgabe beim Extrahieren satt haben, überspringen Sie das vin allen Beispielen. ZB tar -tf foo.tarund tar -xf foo.tar ....
tar
mit istcat /proc/$(pidof tar)/fdinfo/0
(passen Sie den Befehl an, wenn mehr als eintar
Prozess ausgeführt wird).folder/folder2/
wird nicht funktionieren.Antworten:
tar
speichert standardmäßig relative Pfade . GNU tar sagt dies sogar, wenn Sie versuchen, einen absoluten Pfad zu speichern:Wenn Sie einen bestimmten Ordner extrahieren müssen, schauen Sie sich die Tar-Datei an:
Und notiere dir den genauen Dateinamen. Im Falle meiner
foo.tar
Akte könnte ich extrahieren,/home/foo/bar
indem ich sage:Nein, die Art und Weise, wie Sie gepostet haben, ist (notwendigerweise) nicht die richtige. Sie müssen den führenden Schrägstrich weglassen. Wenn Sie absolute Pfade simulieren möchten, müssen Sie
cd /
zunächst sicherstellen, dass Sie der Superuser sind. Dies macht auch das Gleiche:Es gibt sehr offensichtliche gute Gründe, warum
tar
Pfade in relative konvertiert werden. Eine Möglichkeit besteht darin, ein Archiv an einem anderen Ort als der ursprünglichen Quelle wiederherzustellen. Das andere ist Sicherheit. Sie könnten ein Archiv extrahieren, erwarten, dass seine Dateien in Ihrem aktuellen Arbeitsverzeichnis erscheinen, und stattdessen versehentlich Systemdateien (oder Ihre eigene Arbeit) an einer anderen Stelle überschreiben.Hinweis: Wenn Sie diese
-P
Option verwenden,tar
werden absolute Pfade archiviert. Es lohnt sich also immer, den Inhalt großer Archive vor dem Extrahieren zu überprüfen.quelle
--strip-components=N
kann hier für einige nützlich sein../foldername/
anstattfoldername
, ich vermute, dass es war, weil, als ich den Teer erstellte, mit dem ich ihn erstellte,tar -cvf santi.tar ./*
und als ich den Teer "auflistete", das ist, was es sagtedrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
.gz
?-xvf
zu-xzvf
(-z
Option hinzufügen ) und natürlichfoo.tar
zufoo.tar.gz
oder wie auch immer Ihr Archiv heißt. Dasselbe gilt für-j
(bz2) und für einige neuere Versionen-J
(xz). Ansonstenzcat foo.tar.gz | tar -xvf - …
funktioniert eine Pipeline wie auch.v
in allen Beispielen. ZBtar -tf foo.tar
undtar -xf foo.tar ...
.