Extrahieren Sie einige Mitglieder aus dem Teerarchiv und leiten Sie sie durch das Netzwerk

9

bearbeiten: Ich möchte extra member01und member02und Verzeichnisblah/

tarball_1.tar.gzenthält Verzeichnis test/mit 20 Dateien. Ich möchte nur Mitglied test/member01und test/member02und Verzeichnis extrahieren blah/und sie mit ssh / scp in einen anderen "remote_host" kopieren.

Kann dies als Einzeiler durchgeführt werden? Ich hielt mit tar, paxoder cpioaber ich denke , ich bin sehr nicht mit dieser Dienstprogramme qualifizierte noch.

Felipe Alvarez
quelle

Antworten:

15
tar -xzOf file.tar.gz file_you_want_to_extract | ssh user@host 'cat > /path/to/destination_file'
  • -x : Extrakt
  • -z : Durch gzip
  • -f : Nehmen Sie eine Datei als Eingabe auf.
  • -O : Nach stdout extrahieren

Das file_you_want_to_extractwird aus file.tar.gzder Standardausgabe extrahiert , in die weitergeleitet wird ssh, die catauf dem Remote-Host ausgeführt wird und deren Standard in die Remote schreibt destination_file. Natürlich sollten Sie sicherstellen, dass Sie über Schreibrechte für Ihre gewünschte Zieldatei auf dem Remote-Host verfügen.

Atanamir
quelle
Ich war in meinem ursprünglichen Beitrag nicht klar :) Ich muss mehr als ein Mitglied plus ein Verzeichnis extrahieren.
Felipe Alvarez
sollte tar -xz0f sein: nach fkommt Archivname
Felipe Alvarez
1
Das Extrahieren mehrerer Mitglieder wird unübersichtlich, wenn Sie möchten, dass sie Einzeiler sind, da das Extrahieren mehrerer Dateien in stdout nicht ganz sinnvoll ist. Sie müssen wahrscheinlich tarfür jeden, den Sie extrahieren möchten, diese dann scp -r member1 member2 blah user@host:/destination/folder/kopieren. Wenn Sie es wirklich einzeilig machen möchten, können Sie alle diese Befehle mit verketten &&. Eine praktischere Option besteht darin, auch nur ein Skript zu erstellen, das die Befehlszeilenoptionen durchläuft und tarfür jede ausgeführt wird und scpam Ende alle Optionen ausführt .
Atanamir
ahhhhh, ich verstehe. Es gibt also keine "einfache" Einzeiler-Methode. Danke :-)
Felipe Alvarez
2
Wenn "Einzeiler" wichtiger ist als "Wie lange es dauert", können Sie alternativ das gesamte Archiv durch ssh leiten und die gewünschten Mitglieder auf der anderen Seite extrahieren. "Cat file.tar.gz | ssh user @ host ' tar zxvf file1 file2 dir1 '
Colin