Frage Zuverlässige Dateiübertragung über langsame oder flockige Netzwerkverbindung


Ich muss eine Reihe von Dateien über eine Breitbandverbindung von geringer Qualität an einen Server übertragen. Die Dateien sind groß und benötigen ungefähr 30 Minuten für die Übertragung pro Datei.

Ich benutze scp, aber es hängt manchmal - die Übertragung nicht mit einem Fehler fehlschlägt, es läuft weiter, aber keine weiteren Daten übertragen.

Ich suche also nach einer "ausfallsicheren" Upload-Lösung, die auch dann funktioniert, wenn die Verbindung für einige Minuten ausfällt oder anderweitig unzuverlässig ist.

Meine Idee ist:

  1. Split große Datei in kleine Teile
  2. Teile hochladen, mit Timeout und erneut versuchen, falls nicht

Fragen:

  • Gibt es ein Ready-to-Run-Tool, das diese Idee umsetzt? (keine spezifische Notwendigkeit für scp. könnte ftp oder etwas anderes sein)
  • Gibt es eine Möglichkeit zu erkennen, wann scp hängt? ((Es läuft noch, überträgt aber keine Daten)

8
2017-07-15 01:41


Ursprung




Antworten:


Sie können rsync verwenden, um Ihre Datei von einem Computer auf den anderen zu kopieren. rsync kann ssh als zugrunde liegenden Transport verwenden. Kombinieren rsync --partial mit einem Skript wie dieses Versuchen Sie es erneut im Falle eines Netzwerkfehlers, und Sie sollten in der Lage sein, Ihre Dateien auch angesichts von Netzwerkfehlern zu verschieben.

Eine andere Möglichkeit wäre, das Remote-Dateisystem auf Ihrem lokalen Computer mit zu mounten sshfs -o reconnectund dann einfach die Datei (en). sshfs / Linux kümmert sich um den Rest. Aufgrund einiger Tests, die ich heute gemacht habe, scheint dies der Fall zu sein viel langsamer als rsync.

Schließlich können Sie ein VPN zwischen den beiden Computern einrichten. Dies beinhaltet die meiste Arbeit, und eine der obigen Lösungen ist viel einfacher, aber es würde das Problem einer flockigen Netzwerkverbindung lösen. Und wie einige Leute bemerkt haben, kann dies auch flockig sein. Es können funktionieren, wenn das VPN sehr aggressiv ist, um Verbindungen wiederherzustellen, wie OpenVPN ist, aber die obigen Lösungen sind viel besser.


15
2017-07-15 01:58



Damit dies funktioniert, müssen Sie die --partial Flagge (oder etwas, das impliziert --partial mögen --inplace) Wenn die Übertragung unterbrochen wird, wird die Teilübertragung gelöscht und Sie müssen erneut beginnen. - womble♦
Rsync definitiv der Weg zu gehen ... Oder Robocopy für Windows. - Brian Adkins
Wie genau würde ein VPN bei einer Flakey-Verbindung helfen? - EEAA
Die VPN-Software (z. B. OpenVPN) kann sich im Hintergrund automatisch transparent mit allen Anwendungen verbinden, die über das VPN laufen. - Michael Hampton♦
@ErikA Meine Gedanken genau - VPN über Flakey Link = Flakey VPN, das immer neu gestartet werden muss. Es fügt nur eine zweite Ebene zu dem Problem hinzu, dass die Transportsoftware in der Lage sein muss, die Dateiübertragung genau dort fortzusetzen, wo sie unterbrochen wurde. - Fiasco Labs