[rsync] Wiederaufnahme des jobs nach Verbindungsabbruch?

JanezH

Benutzer
Mitglied seit
27. Jul 2021
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
Hallo, Synology Community!

Seit kurzem überwache ich im Betrieb die Datensicherungen/-synchronisierungen unserer Kunden.
Da der zuständige Mitarbeiter spontan ging und eine lausige Dokumentation hinterließ, muss ich vieles von Grund auf erarbeiten.

Synology ist für mich ein neues Thema und ich arbeite mich voran!

Leider habe ich ein Problem mit folgendem Szenario:

Die Backups werden auf der firmeninternen Synology-NAS (Syn1) gesichert und sollen mit einer Remote-NAS synchronisiert werden.
Der Standort der Remote-NAS (Syn2) ist der Privatwohnsitz des Geschäftsführers.
Beide Syns haben eine DDNS-Zuweisung über synology.me und sind auch zu jederzeit über das Synology-Konto und auch unserem CMS (Central Management System) erreichbar.

Ein rsync-Job auf der Syn1 wurde erstellt. Dieser soll in der Nacht mit auf die Syn2 synchronisieren.
Beim Erzeugen des Jobs wurde der Verbindungstest erfolgreich bestanden.
Mit Abschluss des Jobs habe ich eine Synchronisierung, unabhängig der Tages- und Uhrzeit, gestartet.
Diese läuft.

Am nächsten Tag erhalte ich eine Mail, dass der rsync-Job mit dem Fehlercode 30 nicht abgeschlossen wurde. Dieser Fehler entsteht jeweils um etwa 3.45 Uhr. Ein wenig ärgerlich, da es sich um mehr als 2 TB an Daten handelt, welche erstmalig synchronisiert werden müssen. ich habe sogar über das Wochenende (betriebsfreie Zeit des Kunden) eine Erstsynchronisation gestartet.

Nach einigen Recherchen vermute ich, dass seitens der Privatanbieter eine Zwangstrennung erzeugt, den Router neu startet oder eine neue IP-Adresse vergibt. Der Wiederaufbau dauert zu lang und der rsync-Job wird fehlerhaft beendet.

Meine Absicht ist, dass die Synchronisierung zuverlässig und automatisiert läuft.

  • Kann ich einen rsync-Job anpassen/erweitern/ändern, dass bei Verbindungsverlust nach X Minuten diese neu aufgebaut und fortgesetzt wird?
  • Ist vielleicht ein anderer Dienst/Service über Synology verfügbar, der zuverlässiger ist?
  • Gibt es eine Lösung zu meinem Problem?

Vielen Dank,

Janez
 

AndiHeitzer

Benutzer
Sehr erfahren
Mitglied seit
30. Jun 2015
Beiträge
3.216
Punkte für Reaktionen
509
Punkte
174
Ich habe bei mir im privaten Umfeld ein ähnliches Szenario in Betrieb:

DS215 bei meinem Vater
DS916 bei mir

Aufgabe war es, bei meinem Vater nicht nur ein lokales Backup laufen zu lassen, sondern seinen Datenbestand extern zu sichern.
Das Problem ist eine sehr langsame Internetanbindung. Datenmenge ~600GB

Lösung:
Synology Drive Server

Das zu sichernde gemeinsame Laufwerk habe ich von der DS215 zur DS916 mittels Drive Server verbunden und das synct ständig.
Maximales Änderungsvolumen sind bis zu 10GB am Tag. Mehr gibt die Bandbreite nicht her. Daher würde auch ein HyperBackup-Job zu meiner DS916 nicht vernünftig laufen.
Auf meiner DS916 kann ich den gesyncten gemeinsamen Ordner ganz normal in einen bei mir lokalen HyperBackup-Job einbinden.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.137
Punkte für Reaktionen
898
Punkte
424
Der Job bricht zwar ab, aber die teilübertragenen Daten müssten eigentlich erhalten bleiben. Beim nächsten Start gleicht er ab und macht dann weiter. Irgendwann ist nach X Starts fertig und es müssen nur noch die Änderungen rüber, was dann ohne Fehler geht. (Basiert allerdings auf rsync Einzelkopie Erfahrung).
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
587
Punkte
174
Wie wäre es mit einem eigenen bash script welches du über den Aufgabenplaner startest?

Der Code könnte so aussehen (Quelle: Resume rsync over SSH after broken connection?):

Bash:
#!/bin/bash

while [ 1 ]
do
    rsync -avz --timeout=60 --partial source dest
    if [ "$?" = "0" ] ; then
        echo "rsync completed normally"
        exit 0
    else
        echo "Rsync failure. Backing off and retrying..."
        sleep 180
    fi
done

Mit dem Parameter "--timeout=TIMEOUT" wird die maximum I/O timeout in Sekunden gesetzt. In diesem Beispiel bricht rsync nach 60 sec ab sollte keine Antowort mehr vom Server kommen.
Somit ist der Rückgabewert des rsync Kommandos ungleich "0" und man landet im "Sonst" Pfad. Es wird zunächst mit "sleep" 180 Sekunden gewartet bevor ein neuer Versuch gestartet wird.
Wenn die Übertragung Erfolgreich war ist der Rückgabewert gleich "0" und das bash Skript wird mit "exit" beendet.

Somit ließe sich dein Vorhaben ziemlich einfach realisieren.
 
  • Like
Reaktionen: RoddiEF


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat