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?
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:
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.
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:
%Vor%-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
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).