So extrahieren Sie einen einzelnen Ordner und seine Unterordner aus einem "Tarball" (.tar.gz)

15107
mikey1980

Ich muss einen einzelnen Ordner und seine Unterordner aus einem Tarball ( .tar.gz) auf einem CentOS-Server extrahieren . Ich habe keine Ahnung, wie ich das mit einem SSH-Terminal mache.

Ich habe es versucht:

gunzip -c files_20100623.0110.tar.gz | tar -xvf home/bsisplas/public_html/staging/template/*.* 

Es scheint jedoch nicht, dass die Datei im Archiv gefunden wird. Wo geben Sie außerdem in der gunzipSyntax an, wohin die extrahierten Dateien gehen sollen? Ich bin ein Linux-Terminal Noob, um es gelinde auszudrücken.

4
Verwenden Sie Teer mit der Markierung -z .. es ist sauberer als die Verrohrung. und Sie müssten noch lange warten, da das Archiv vor dem Entpacken vollständig entpackt wird matthias krull vor 13 Jahren 0

2 Antworten auf die Frage

6
coneslayer

Wenn Sie die -fOption to verwenden tar, müssen Sie zunächst ein Argument angeben, das den Dateinamen des Archivs angibt. Da Sie es von einer Pfeife aus füttern, meinen gunzipwir -Standardeingabe:

gunzip -c files_20100623.0110.tar.gz | tar -xvf - home/bsisplas/public_html/staging/template/*.* 

Mein nächster Punkt wäre, dass Sie nur den Verzeichnisnamen angeben müssen. (Außerdem: *.*ist normalerweise ein DOS-Ism. Wenn Sie in Unix "alle Dateien" meinen, schreiben *Sie einfach . Wenn Sie schreiben *.*, sagen Sie "alle Dateien mit einem Punkt irgendwo im Namen"), die wichtige Dateien ohne Punkt ausschließen könnten. wie Makefileoder README):

gunzip -c files_20100623.0110.tar.gz | tar -xvf - home/bsisplas/public_html/staging/template 

Das sollte funktionieren. Sie können die Dinge jedoch etwas einfacher machen, indem Sie die Option tar's' verwenden -z, die sie dazu auffordert, das gunzipselbst zu tun . Wir verwenden das und ersetzen den -eingegebenen Dateinamen durch den Archivdateinamen:

tar -xvzf files_20100623.0110.tar.gz home/bsisplas/public_html/staging/template 

Wie funktioniert das?

Nun, ich habe keine Fehlermeldung erhalten, nur der Cursor saß einfach da, bis ich Strg-C drückte ... ohhh Mann, ich möchte wirklich nicht 6 GB herunterladen, um ein paar hundert K zu bekommen mikey1980 vor 13 Jahren 0
Wie lange hast du gewartet? Wenn es sich um ein 6-GB-Archiv handelt, kann es etwas dauern. Sie werden nichts sehen, bis es die gewünschten Dateien erreicht. coneslayer vor 13 Jahren 0
Wenn ich Ihr Endergebnis verwende, wird es in den aktuellen Ordner oder über die Originaldateien extrahiert. Dies ist ein Produktionsserver. Ich muss also sicherstellen, dass die Originale nicht ersetzt werden. Es gibt einen Ordner mit dem Namen 'tmp' das gleiche Verzeichnis wie das Archiv ... hier, wo ich hoffe, die extrahierten Dateien zu platzieren mikey1980 vor 13 Jahren 0
@mikey: was lädst du herunter? Sie erwähnen ssh, aber es sieht so aus, als ob Ihr Archiv lokal ist. Bedingt durch die Struktur der tar-Dateien müssen Sie leider das gesamte Dokument durchsuchen, bis Sie die gewünschte Datei gefunden haben. Dies war in den Tagen von Magnetband-Archiven sehr viel sinnvoller. msw vor 13 Jahren 0
@ mikey1980 Von überall, wo Sie gerade arbeiten, werden die Dateien in home / bsisplas / ... abgelegt, und diese Verzeichnisse werden bei Bedarf erstellt. Wenn Sie möchten, dass diese Verzeichnisse in `tmp` erstellt werden, ist es am einfachsten, cd tmp vor dem Ausführen des Befehls auszuführen und den Archivdateinamen in` ../ files_20100623.0110.tar.gz` zu ändern. @msw Ich glaube, er ssh'ing zu einem Server, auf dem das 6 GB-Archiv lokal gespeichert ist, und möchte die Dateien wahrscheinlich für die spätere Übertragung auf einen anderen Computer extrahieren. Auf diese Weise muss er nicht das gesamte 6-GB-Archiv auf einen anderen Computer verschieben. coneslayer vor 13 Jahren 0
Es ist nicht lokal, unser anderer Programmierer hat diesen dedizierten Server eingerichtet, und er wird täglich mithilfe eines .sh CRON-Jobs in diesem Archiv gesichert mikey1980 vor 13 Jahren 0
@coneslayer es extrahiert in tmp (ich denke?!?) - jetzt warten, Daumen drücken ... ich kann dir nicht genug danken! mikey1980 vor 13 Jahren 0
3
Daenyth

Sie brauchen nur Teer. Sie können eine Liste der Dateien im Archiv mit der -tOption abrufen und dann wie gewohnt extrahieren, jedoch mit dem Dateipfad als letztem Argument:tar zxvf foo.tar.gz filepath

ja, so einfach ist das. matthias krull vor 13 Jahren 0