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, tar werden absolute Pfade archiviert. Es lohnt sich also immer, den Inhalt großer Archive vor dem Extrahieren zu überprüfen.