Rekursive scp-Übertragung fortsetzen (mit rsync?)

14

Ich habe mehrere tausend Dateien mit jeweils ~ 1 MB über scp übertragen und meine Verbindung wurde nach den ersten 2 KB-Dateien oder so unterbrochen. Ich wollte wissen, ob es eine Möglichkeit gibt, die rekursive Übertragung fortzusetzen, ohne von vorne zu beginnen. Etwas wie

$ scp -r [email protected]:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P [email protected]:/datafiles/ ./
... Continue transf...

Das Problem ist, ich kann nicht scheinen, die Syntax richtig zu erhalten, wenn es möglich ist. Kann jemand etwas Licht ins Dunkel bringen, wenn / wie es getan werden kann?

PS. Wenn Sie den Schrägstrich nach "datafiles" in der Zeile "rsync" angeben, überträgt dies das Verzeichnis oder seinen Inhalt? Ich habe widersprüchliche Kommentare gesehen, als ich gegoogelt habe.

Physikmichael
quelle

Antworten:

10

Wenn Sie eine Synchronisierung von einem lokalen Computer zu einem Remote-Host durchführen, funktioniert Folgendes:

rsync -avzl -e ssh /directory/with/files/ [email protected]:/new/directory/
Kiebitz
quelle
Vielen Dank. Ich habe nicht gedacht, dass dies funktioniert, da es anfängt, alle meine Dateien aufzulisten, aber ich habe nicht bemerkt, dass es die "Dateiübertragung" zeigt, was nur bedeutet, dass die Datei auf dem neuesten Stand ist. Richtig war, dass meine Überweisung mit echten (langsameren) Überweisungen aufgehoben wurde.
Physicsmichael
Hmm, für mich ssh -i akey.pemist erforderlich und ich kann das -iTeil nicht dazu bringen , mit diesen Befehlen zu arbeiten.
Isomorphismen
2
Wenn Sie eine große Datei fortzusetzen versuchen, kann diese Option nützlich sein: --partial --inplace --no-whole-file.
Rafael Xavier
@kibitzer - Nachdem die Datei (auf dem Remote-Server) angezeigt wurde, wie haben Sie die Übertragung erneut gestartet? Meins baut einfach die Listendatei auf und zeigt mir die Datei und wieviel hochgeladen wurde. Es bleibt jedoch hängen, ohne dass die Ausgabe fortgesetzt oder fortgesetzt werden kann. Wurde die Übertragung erneut gestartet oder muss ich etwas tun, um sie zu starten?
masterninja01
3
-list nicht nötig. Es ist impliziert durch-a
Guido
11

Die folgende Zeile sollte den Trick dafür machen:

rsync --partial --progress --rsh = ssh -r [email protected]: / datafiles / ./

Ich habe dies noch nie für rekursive Verzeichnisse verwendet, aber als ich es gerade geschrieben habe, schien es wie erwartet zu funktionieren.

Tyler
quelle
1
Dies funktioniert auch, solange Sie das -r =)
physicsmichael
Die meisten meiner rsync-Übertragungen sind vom Typ "rsync -ahP something / user @ host: / somewhere /". Das --rsh = ssh ist völlig unnötig. Dann schleppt sich auch -P in --partial und --progress.
Killermist
1

Der aufgeführte Befehl rsync würde funktionieren, wenn Sie nur "-r" hinzufügen. Sie möchten aber höchstwahrscheinlich auch "-a" und "-v".

Und zum abschließenden Schrägstrich [email protected]: / data / entspricht / data / *. Mit anderen Worten, wenn Sie einen Schrägstrich hinzufügen, wird der gesamte Inhalt kopiert. aber [email protected]: / data wäre das Verzeichnis selbst [und natürlich seine Unterordner]

Matt
quelle
1

Das Zusammenführen der Antworten von Kibitzer und Tyler hat für mich am besten funktioniert:

rsync --partial --progress -avzl -e ssh /directory/with/files/ [email protected]:/new/directory/

(rekursives Synchronisieren und Anzeige des Fortschritts jeder Datei)

Tarc
quelle