Rekursive SCP-Übertragung fortsetzen (mit Rsync?)

7439
physicsmichael

Ich habe mehrere tausend Dateien jeweils ~ 1 MB über scp übertragen und meine Verbindung war nach den ersten 2k-Dateien oder so unterbrochen. Ich wollte wissen, ob es eine Möglichkeit gibt, die rekursive Übertragung ohne Neustart fortzusetzen. So etwas wie

$ scp -r me@host.com:/datafiles/ ./ ... Happy Transfer ... ... BREAK! ... $ rsync -P me@host.com:/datafiles/ ./ ... Continue transf... 

Das Problem ist, dass ich die Syntax anscheinend nicht richtig bekomme, wenn dies möglich ist. Kann jemand etwas Licht aufbringen, ob und wie es gemacht werden kann?

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

14

4 Antworten auf die Frage

11
Tyler

Die folgende Zeile sollte den Trick dafür tun:

rsync --partial --progress --rsh = ssh -r me@host.com: / datafiles / ./

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

Dies funktioniert auch, solange Sie -r = angeben. physicsmichael vor 13 Jahren 0
Die meisten meiner rsync-Übertragungen sind vom Typ "rsync -ahP irgendwas / user @ host: / somewhere /". Die --rsh = ssh ist völlig überflüssig. Dann zieht auch -P in - partial und - progress. killermist vor 10 Jahren 0
10
kibitzer

Wenn Sie von einem lokalen Computer zu einem Remote-Host synchronisieren, würde dies funktionieren:

rsync -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/ 
Vielen Dank. Ich dachte nicht, dass dies funktionierte, weil es damit anfing, alle meine Dateien aufzulisten, aber ich wusste nicht, dass es die "Dateiübertragung" anzeigt, was nur bedeutet, dass die Datei auf dem neuesten Stand ist. Richtig, meine Übertragung wurde abgebrochen und es wurde mit echten (langsameren) Übertragungen abgeholt. physicsmichael vor 13 Jahren 0
Hmm, für mich ist `ssh -i akey.pem` erforderlich, und ich kann den` -i`-Teil nicht dazu bringen, mit diesen Befehlen zu arbeiten. isomorphismes vor 11 Jahren 0
Wenn Sie versuchen, eine große Datei wieder aufzunehmen, können diese Optionen hilfreich sein: `--partial --inplace --no-whole-file`. Rafael Xavier vor 11 Jahren 2
@kibitzer - wie haben Sie die Übertragung erneut gestartet, nachdem Sie die Datei (auf dem Remote-Server) angezeigt haben? Meiner baut einfach die Listendatei und zeigt mir die Datei und wie viel hochgeladen wurde. Es bleibt jedoch keine Option, um die Ausgabe fortzusetzen oder fortzusetzen. Hat die Übertragung erneut begonnen oder muss ich etwas tun, um sie zu starten? masterninja01 vor 10 Jahren 0
"-l" ist nicht notwendig. Es wird von "-a" impliziert Guido vor 9 Jahren 3
1
Matt

Der von Ihnen aufgelistete Befehl rsync würde funktionieren, wenn Sie nur "-r" hinzufügen. Sie möchten aber auch "-a" und "-v".

Über den nachstehenden Schrägstrich ist me@site.com: / data / äquivalent zu / data / *. Mit anderen Worten, wenn Sie einen Schrägstrich hinzufügen, werden alle Inhalte kopiert. aber me@site.com: / data wäre das Verzeichnis selbst [und natürlich seine Unterordner]

1
Tarc

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

rsync --partial --progress -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/ 

(resyncing rekursiv und zeigt den Fortschritt jeder Datei)