it-swarm.com.de

Wie extrahiert man einen einzelnen Ordner aus einem großen tar.gz-Archiv?

Ich verwende diesen Befehl in einem 5 GB Archiv

tar -zxvf archive.tar.gz /folder/in/archive

ist das der richtige Weg, dies zu tun? Es scheint ewig zu dauern, ohne dass eine Befehlszeilenausgabe erfolgt ...

145
Garrett Hall

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, sehen Sie sich an, was in der TAR-Datei enthalten ist:

tar -tvf foo.tar

Und notieren Sie sich den genauen Dateinamen. Im Fall meiner foo.tar - Datei könnte ich /home/foo/bar Extrahieren, indem ich sage:

tar -xvf foo.tar home/foo/bar # Note: no leading slash

Also nein, die Art und Weise, wie Sie gepostet haben, ist (notwendigerweise) nicht die richtige Art und Weise, dies zu tun. Sie müssen den führenden Schrägstrich weglassen. Wenn Sie absolute Pfade simulieren möchten, führen Sie zuerst cd / Aus und stellen Sie sicher, 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. Eine davon ist die Möglichkeit, ein Archiv an einem anderen Ort als der ursprünglichen Quelle wiederherzustellen. Das andere ist Sicherheit. Sie können ein Archiv extrahieren, erwarten, dass seine Dateien in Ihrem aktuellen Arbeitsverzeichnis angezeigt werden, und stattdessen versehentlich Systemdateien (oder Ihre eigene Arbeit) an anderer Stelle überschreiben.

Hinweis: Wenn Sie die Option -P Verwenden, archiviert tarwill absolute Pfade. Es lohnt sich also immer, den Inhalt großer Archive vor dem Extrahieren zu überprüfen.

160
Alexios