tar
speichert 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.tar
Akte könnte ich extrahieren, /home/foo/bar
indem 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 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.