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

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

Ich verwende diesen Befehl auf einem5 GBArchiv

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

ist das die richtige Vorgehensweise? Es scheint ewig zu dauern, ohne dass eine Befehlszeilenausgabe erfolgt ...

Antwort1

tarspeichert relative Pfadestandardmäßig. 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 den Inhalt der TAR-Datei an:

tar -tvf foo.tar

Und notieren Sie sich den genauen Dateinamen. Im Fall meiner foo.tarDatei könnte ich sie extrahieren, /home/foo/barindem ich sage:

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

Also nein, die Art, wie Sie es gepostet haben, ist (nicht unbedingt) die richtige Vorgehensweise. Sie müssen den führenden Schrägstrich weglassen. Wenn Sie absolute Pfade simulieren möchten, tun Sie dies cd /zuerst und stellen Sie sicher, dass Sie der Superuser sind. Das Folgende hat auch denselben Effekt:

tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option

Es gibt sehr offensichtliche und gute Gründe, warum tarPfade in relative Pfade umgewandelt werden. Einer davon ist die Möglichkeit, ein Archiv an anderen Orten als der Originalquelle wiederherzustellen. Der andere Grund ist die Sicherheit. Sie könnten 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 -POption verwenden,tar Willeabsolute Pfade archivieren. Es lohnt sich also immer, den Inhalt großer Archive vor dem Entpacken zu prüfen.

verwandte Informationen