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 me@host.com:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P me@host.com:/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.

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/ you@host.com:/new/directory/

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 me@host.com: / datafiles / ./

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


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 me@site.com: / data / entspricht / data / *. Mit anderen Worten, wenn Sie einen Schrägstrich hinzufügen, wird der gesamte Inhalt kopiert. aber me@site.com: / data wäre das Verzeichnis selbst [und natürlich seine Unterordner]


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/ you@host.com:/new/directory/

(rekursives Synchronisieren und Anzeige des Fortschritts jeder Datei)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.