Ich muss mit rsync große Datenmengen (> 80 GB) über ssh übertragen. Alles funktioniert einwandfrei, aber die DSL-Verbindung, von der die Sicherungsdaten gesendet werden, wird bis zu 3 Minuten lang alle 24 Stunden unterbrochen (ein Providerwechsel ist nicht möglich).
Wie mache ich:
Die Übertragung automatisch neu starten, wenn die Verbindung wiederhergestellt ist?
Stellen Sie sicher, dass nicht versehentlich zwei rsync-Befehle gleichzeitig ausgeführt werden.
linux
command-line
ssh
rsync
Sathyajith Bhat
quelle
quelle
while ./run_script; do echo "Retrying..."; done; echo "Done."
Stellen Sie sicher, dass Sierun_script
wieder0
erfolgreich sind.Antworten:
Folgendes sollte hilfreich sein:
Wenn die Verbindung unterbrochen wird, wird rsync mit einem Exit-Code ungleich Null beendet. Dieses Skript führt einfach rsync erneut aus und lässt es so lange weiterlaufen, bis die Synchronisierung normal abgeschlossen ist.
quelle
Dies entspricht in etwa der Antwort von Peter, gibt dem Benutzer jedoch die Option, welche Remote-Datei er speichern und wo er sie speichern möchte (und führt den RSYNC über SSH durch). Ersetzen Sie USER und HOST durch Ihren Benutzernamen bzw. Host.
Die hier verwendeten rsync-Optionen ermöglichen die Fortschrittsstatistik während der Übertragung, das Speichern von Teildateien bei unerwartetem Fehler und die Möglichkeit, bei Wiederaufnahme an teilweise abgeschlossene Dateien anzuhängen. Die Option -v erhöht die Ausführlichkeit, die Option -z aktiviert die Komprimierung (gut für eine langsame Verbindung, erfordert jedoch mehr CPU-Leistung an beiden Enden) und die Option -e ermöglicht die Übertragung über ssh (Verschlüsselung ist immer gut).
Hinweis: Verwenden Sie diese Option nur, wenn Sie die Anmeldung mit öffentlichem Schlüssel für Ihr ssh aktiviert haben. Andernfalls werden Sie beim Neustart nach einem Kennwort gefragt (wodurch alle Funktionen des Skripts beendet werden).
quelle
Der Supervisor-Daemon (ein Prozesssteuerungsmanager) könnte sehr gut funktionieren, nachdem er RSA-Zertifikate beider Seiten mit einer ähnlichen Konfiguration wie folgt erstellt hat: (/ etc / supervisor / supervisord.conf ist der Konfigurationsdateipfad auf Debian-basierten Systemen.)
quelle
Die Antwort von @Peter scheint sehr nützlich zu sein, aber für mich war es wichtig, die
--update
Option zu verwenden . Nachdem die Verbindung wieder aufgenommen--update
wurde, versuchte rsync von Anfang an, alle zu synchronisieren. Mit--update
werden bereits vorhandene Dateien übersprungen.rsync --partial --update --progress -r [SOURCE] [DESTINATION]
quelle
--update
Überspringt bereits vorhandene Dateien. Einschließlich der Dateien, die nicht vollständig auf das Ziel kopiert wurden. Ich denke, dass es gegen die meisten Anwendungsfälle geht.rsync --partial --update file1 remotehost:file1
. nachdem ich 15% transferiert hatte, habe ich den Transfer abgebrochen (kill-Kill).