scp einen Ordner zu einem Remote-System mit dem Verzeichnis-Layout

8

Ich habe einen großen Verzeichnisbaum mit Hunderten von verschachtelten Unterordnern. Ich muss nur 4 Ordner und deren Inhalt auf ein Remote-System kopieren, aber ich muss die Zielordner-Struktur beibehalten, um gleich zu bleiben.

E.G.

%Vor%

Ich möchte ./test/sub1/subsub1/* auf ein Ziel wie Benutzer @ System kopieren: ~ / test / sub1 / subsub1 / * aber ich möchte subsub2 oder sub2 nicht kopieren.

Ich habe versucht, scp wie folgt zu verwenden:

%Vor%

Das Ergebnis: scp: / test / sub1 / subsub1: Keine solche Datei oder Verzeichnis

Ich habe es auch versucht:

%Vor%

Dies funktioniert, aber dump alle Dateien in einem einzigen Verzeichnis. Die Verzeichnisstruktur / test / sub1 / subsub1 wird nicht gepflegt.

Wie kann ich einen Ordner kopieren und gleichzeitig seine Struktur beibehalten?

    
Chris 14.03.2014, 00:34
quelle

2 Antworten

14

Sie benötigen eine Zwei-Pass-Lösung. Stellen Sie zunächst sicher, dass das Zielverzeichnis auf dem Remote-Host vorhanden ist:

%Vor%

Dann können Sie Ihre Dateien kopieren. Ich empfehle, rsync anstelle von scp zu verwenden, da es zum Synchronisieren von Verzeichnissen gedacht ist. Beispielverwendung:

%Vor%

Das Flag -e akzeptiert eine Remote-Shell, die zum Ausführen der Übertragung verwendet wird. Nachgestellte Schrägstriche sind sehr wichtig mit rsync , also stellen Sie sicher, dass Sie mit dem obigen Beispiel übereinstimmen.

    
conorsch 14.03.2014, 00:43
quelle
2

Verwenden Sie die Option -R (--relative) für rsync, um die Verzeichnisstruktur beizubehalten. Schau dir an:

Ссылка

Hier ist ein Beispiel:

%Vor%

Unten wird von der rsync Manpage abgeschnitten:

  

-R, --relative

     

Verwenden Sie relative Pfade. Dies bedeutet, dass die vollständigen Pfadnamen, die in der Befehlszeile angegeben sind, nicht nur an den Server gesendet werden   die letzten Teile der Dateinamen. Dies ist besonders nützlich, wenn Sie   möchte mehrere verschiedene Verzeichnisse gleichzeitig senden. Zum   Beispiel, wenn Sie diesen Befehl verwendet haben:

%Vor%
  

... das würde eine Datei namens baz.c in / tmp / auf dem entfernten Rechner erzeugen. Wenn Sie stattdessen

verwendet haben
%Vor%
  

Dann wird eine Datei mit dem Namen /tmp/foo/bar/baz.c auf dem Remote-Computer erstellt, wobei der vollständige Pfad beibehalten wird. Diese zusätzlichen Pfade   Elemente werden "implizierte Verzeichnisse" genannt (d. h. das "foo" und das   "foo / bar" Verzeichnisse im obigen Beispiel).

    
frielp 21.01.2016 10:02
quelle

Tags und Links