Ich verwende diesen Befehl für 5 GB Archiv
tar -zxvf archive.tar.gz /folder/in/archive
Ist dies der richtige Weg, dies zu tun? Es scheint ewig zu dauern, ohne Befehlszeilenausgabe …
Kommentare
- Haben Sie einen absoluten oder relativen Pfad verwendet? Sollte relativ sein, ansonsten sieht es richtig aus. Wie lange haben Sie es laufen lassen und wie gut ist Ihr System? Auf einer schnellen Maschine dauert es mindestens einige Minuten. Möglicherweise eine Stunde oder länger? Ich ' führe jetzt einen Test durch.
- Ja, er wurde nach ~ 1 Stunde abgeschlossen, aber der absolute Pfad war falsch, Sie hatten Recht.
- Unter Linux können Sie mit
cat /proc/$(pidof tar)/fdinfo/0
beobachten, wie weittar
im Archiv ist (passen Sie den Befehl an, wenn Sie mehr als einentar
Prozess läuft). - Der wichtige Teil ist auch kein abschließender Schrägstrich. Die Verwendung von
folder/folder2/
funktioniert nicht '.
Antwort
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 an, was darin enthalten ist die TAR-Datei:
tar -tvf foo.tar
Und notieren Sie den genauen Dateinamen. Im Fall meiner foo.tar
-Datei könnte ich Extrahieren Sie /home/foo/bar
, indem Sie sagen:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Also nein, die Art und Weise, wie Sie gepostet haben, ist nicht (unbedingt) korrekt Weg, es 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 funktioniert auch wie folgt:
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 anderen Orten als seiner ursprünglichen Quelle wiederherzustellen Das andere ist die 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 das -P
Option, tar
wird Absolute Pfade archivieren. Es lohnt sich also immer, den Inhalt großer Archive vor dem Extrahieren zu überprüfen.
Kommentare
-
--strip-components=N
kann für einige hier nützlich sein. - In meinem Fall musste
./foldername/
anstelle von , ich denke, das lag daran, dass ich den Teer beim Erstellen mittar -cvf santi.tar ./*
und beim " erstellt habe aufgelistet " der Teer dies ist, was es sagtedrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
- Und über
.gz
? - @PeterKrauss ändere
-xvf
in-xzvf
(füge die-z
Option) und natürlichfoo.tar
bisfoo.tar.gz
oder wie auch immer Ihr Archiv heißt. Gleiches gilt für-j
(bz2) und in einigen neueren Versionen-J
(xz). Andernfalls funktioniert auch eine Pipeline wiezcat foo.tar.gz | tar -xvf - …
. - Und denken Sie daran, wenn Sie die ausführliche Ausgabe während der Extraktion satt haben, überspringen Sie einfach die
v
in allen Beispielen. Zum Beispieltar -tf foo.tar
undtar -xf foo.tar ...
.