wolfuli

Synchronisation eines Ordners von einem NAS zu einem zweiten NAS mittels rsync und fun_plug

Von einigen Webseitenbesuchern, die mittlerweile mehrere NAS betreiben, habe ich die Anfrage bekommen, ein Tutorial zu schreiben, wie man einen Ordner auf einem NAS auf ein zweites NAS synchronisieren kann. Natürlich funktioniert das auch zu beliebigen anderen Rechnern, ich beschreibe es hier aber absichtlich nur für das fun_plug (welches natürlich auf beiden NAS installiert sein muss).

Achtung: Ich beschreibe eine Variante ohne Verschlüsselung der Datenübertragung. Sollte dies gewünscht sein, so verweise ich auf die Suchmaschine deiner Wahl. Diese sollte dich mit dem Stichwort „rsync ssh“ zu einem weiterführenden Artikel bringen.

Achtung: Bestehende Konfigurationen einen rsync-Servers werden unter Umständen überschrieben, Nutzer werden gebeten, das folgende Tutorial selbstständig in die Konfiguration zu integrieren.

Werbung


Los gehts mit der Vorstellung des Szenarios: NAS Alice enthält einen Ordner namens Foo, welcher regelmäßig auf das NAS Bob in den Ordner Bar gespiegelt werden soll. Änderungen in Foo werden auf Bob kopiert, Änderungen an Bar werden verworfen bzw. auf den Stand von Alice zurückgesetzt.

Kommen wir zur Konfiguration. Der zu spiegelnde Ordner auf Alice liegt in meinem Falle in /mnt/HD/HD_a2/Foo, dies wird sich sehr wahrscheinlich zu eurer Konfiguration unterscheiden! Bitte selbstständig anpassen! Zunächst müssen verschiedene Dateien zur Konfiguration des rsync-Servers angelegt werden (siehe Sektion „Download“). Dieser wird auf dem NAS Alice gestartet und stellt dann nach Authentifikation das konfigurierte Verzeichnis für einen rsync-Client (in diesem Fall das NAS Bob) bereit.

Download der erforderlichen Dateien

Auf Alice führt man die folgenden Schritte aus:

cd /ffp/etc/
mkdir -p /ffp/var/run/
wget http://wolf-u.li/u/370 -O rsyncd.conf
wget http://wolf-u.li/u/371 -O rsyncdmotd
wget http://wolf-u.li/u/372 -O rsyncdsecretsfile
chmod 600 rsyncdsecretsfile

Und auf Bob führt man die folgenden Kommandos aus:

mkdir -p /ffp/var/opt/uwmirrorfolderrsync/
cd /ffp/var/opt/uwmirrorfolderrsync/
wget http://wolf-u.li/u/375 -O uwmirrorfolderrsync.sh
wget http://wolf-u.li/u/374 -O uwmirrorfolderrsyncpass
chmod 600 uwmirrorfolderrsyncpass
chmod a+x uwmirrorfolderrsync.sh
cd /ffp/start/
wget http://wolf-u.li/u/376 -O uwmirrorfolderservice.sh

Nun sind die erforderlichen Konfigurationsdateien auf beiden NAS heruntergeladen.

Passwort

Jetzt geht man auf Alice und editiert die Datei /ffp/etc/rsyncdsecretsfile. Dort muss man statt YOURPASSWORDHERE ein Passwort einfügen, welches Bob zur Authentifizierung an Alice verwenden wird. Dementsprechend rate ich ein ca. 20-Stelliges oder noch längeres Kennwort zu verwenden, das tut an der Stelle keinem weh. Dieses Passwort muss nun auf Bob in der Datei /ffp/var/opt/uwmirrorfolderrsync/uwmirrorfolderrsyncpass statt YOURSERVERPASS eingetragen werden (ohne zusätzliche Zeichen!

Ordner

Der zu kopierende Ordner muss nun auf Alice konfiguriert werden. Dieser ist derzeit auf „/mnt/HD/HD_a2/Foo“ festgelegt, was in der Datei /ffp/etc/rsyncd.conf abgeändert werden muss. Der Zielordner auf Bob wird in /ffp/var/opt/uwmirrorfolderrsync/uwmirrorfolderrsync.sh in der Variable BACKUPDIR abgeändert, welcher momentan auf /mnt/HD/HD_a2/Bar konfiguriert ist.

Testlauf

Auf Alice muss nun der Rsync-Server gestartet werden:

sh /ffp/start/rsyncd.sh start

Auf Bob kann man nun einen ersten Testlauf machen:

/ffp/var/opt/uwmirrorfolderrsync/uwmirrorfolderrsync.sh

Normalerweise sollte nun der erste Lauf problemlos durchlaufen, eventuelle Fehler sollten klar erkennbar sein.

Praktischer Betrieb

Hat der Testlauf geklappt, wird auf Alice der Rsync-Server dauerhaft eingeschalten und auf Bob ein Cron-Job eingerichtet, der täglich um 03:00 Uhr und um 15:00 Uhr (lokaler Systemzeit) den Abgleich startet.

Alice:

chmod a+x /ffp/start/rsyncd.sh

Bob:

chmod a+x /ffp/start/uwmirrorfolderservice.sh
/ffp/start/uwmirrorfolderservice.sh start

Das war. Bei Fragen oder Anmerkungen einfach einen Kommentar hinterlassen. Ich freue mich aber auch über ein Danke 🙂

Veröffentlicht von

29 Gedanken zu „Synchronisation eines Ordners von einem NAS zu einem zweiten NAS mittels rsync und fun_plug“

  1. Vielen Dank für die Anleitung und die Bereitstellung der Werkzeuge. Praktischerweise sollte dies auch gut zwischen NASsen verschiedener Hersteller funktionieren, wenn sie fun_plug unterstützen. 🙂

    MfG,
    NasInfoFan

    1. @NasInfoFan: Sofern der Client rsync unterstützt, ist die Spiegelung möglich. Damit kann man auch auf NAS, die kein fun_plug, sondern andere Technologien unterstützen, kopieren lassen.

      Viele Grüße,
      Uli

  2. Hallo Uli,
    besten Dank für deine Anleitung….endlich funktioniert es bei mir.

    Habe es vor längerer Zeit schon mal ausprobiert, bin aber gescheitert und habe aufgegeben. Jetzt mit neuem Elan hat es geklappt.

    Da es mit einem Ordner prima klappt, warum nicht mehrere Ordner an verschiedenen Orten, auch das geht, aber mit meiner Variante finde ich das etwas umständlich.

    Derzeit trage ich 3x in der uwmirrorfolderservice.sh drei verschiedene uwmirrorfolderrsync.sh ein, wegen drei Ordnern.
    Außerdem habe ich nun in der rsyncd.conf drei Abschnitte und im Ordner uwmirrorfolderrsync drei uwmirrorfolderrsync Dateien.

    Gibt es da nicht einen besseren Trick? Im Inet finde ich zwar Anleitungen, aber nicht wirklich für mehrere Ordner. 🙁

  3. Hallo,
    ich versuche vergeblich einen Cronjob bei meinem DNS-325 einzurichten. ich verwende den Befehl „crontab -e“. Ein erfolgreiches Abspeichern der Datei ist nicht möglich. Weiß jemand Rat, wie man einen Cronjob in die Crontab einfügen kann?

    Viele Grüße
    Dominik

    Nebenbei, der Editor ist anscheinend schon einmal nicht der vi.

    1. Hallo Dominik,
      nimm am besten die Datei –> /ffp/start/uwmirrorfolderservice.sh
      aus Uli’s Anleitung und als Editor würde ich dir Nano empfehlen.

      gruss
      Peter

  4. Hallo Uli,

    nochmals vielen Dank für diese Anleitung. Ich habe es auch fast geschafft, aber…

    Beim Start vom Rsync-Server erhalte ich die Meldung:

    Error: Missing or wrong pid file in /ffp/etc/rsyncd.conf (expected: /var/run/rsyncd.pid)

    Fehlen da Rechte oder muss ich den Pfad in der rsyncd.conf ändern?

    Muss ich auch die IP-Adressen in den beiden Dateien rsyncd.conf und uwmirrorfolderrsync.sh an die IP-Adressen meiner Server anpassen?

    Gruß
    Arno

    1. Hallo Arno,
      – in der rsyncd.conf steht bei mir –> pid file = /ffp/var/run/rsyncd.pid
      diese Datei existiert bei mir auch in dem genannten Pfad.
      Das müsste auch in deiner rsyncd.conf stehen, da du sie ja von Uli downgeloaded hast.
      – die IP-Adressen müssen an dein Netzwerk angepasst werden, damit es funktioniert.

      gruss
      Peter

      1. Hallo Peter,

        ich habe die Datei von Uli genommen und somit steht auch bei mir:
        pid file = /ffp/var/run/rsyncd.pid

        Die Datei /ffp/var/run/rsyncd.pid wird aber nicht erzeugt und es kommt nur die Fehlermeldung:
        Error: Missing or wrong pid file in /ffp/etc/rsyncd.conf (expected: /var/run/rsyncd.pid)

        Ich habe nur das fun_plug 0.7 installiert. Muss ich ggf. auch Zusatzpakete installieren und wenn ja, welche?

        Gruß
        Arno

        1. …das heißt die Datei existiert nicht?
          Ich glaube die Datei wird erstellt wenn der Rsync-Server gestartet wird.
          Hat es bei dir Probleme gegeben beim starten des Servers?

          Ich habe nun auch das fun_plug 0.7, Zusatzpakete brauchst du eigentlich nicht.

          gruss
          Peter

          1. Hallo Peter,

            ja, es besteht das Problem beim Starten des rsync-Servers.

            Folgende Schritte habe ich gemacht:
            cd /ffp/etc/
            wget http://wolf-u.li/u/370 (Download rsyncd.conf)
            wget http://wolf-u.li/u/371 (Download rsyncdmotd)
            wget http://wolf-u.li/u/372 (Download rsyncdsecretsfile)
            chmod 600 rsyncdsecretsfile
            vi rsyncdsecretsfile (Passwort geändert)
            vi rsyncd.conf (path und hosts allow geändert)
            sh /ffp/start/rsyncd.sh start
            Error: Missing or wrong pid file in /ffp/etc/rsyncd.conf (expected: /var/run/rsyncd.pid)

            Was mache ich falsch?

            Gruß
            Arno

            1. ….knifflig, in meiner rsyncd.pid steht nur 2212 in der ersten Zeile, das ist (glaube ich) die Prozessnummer.
              Hast du mal versucht diese Datei dort selbst zu erstellen und eine Nummer reinzuschreiben.
              Ist zwar nicht die feine englische Art, aber um zu sehen, ob sich überhaupt was tut vielleicht ganz ok.
              Ansonsten erschöpfen sich meine (Linux)Weisheiten…..

              gruss
              Peter

  5. @Peter
    Der Fehler liegt in der Datei „/ffp/start/rsyncd.sh“. Dort steht „pid_file=/var/run/rsyncd.pid“ statt „pid_file=/ffp/var/run/rsyncd.pid“.

    Zusätzlich musst Du in der Datei „rsyncd.conf“ das Leerzeichen nach dem = entfernen. Also „pid file =/ffp/var/run/rsyncd.pid“.

    1. Hallo Tom,

      Jubel, Jubel, Jubel!!!

      Genau das waren die beiden Fehler. Jetzt läuft es.

      Ich frage mich nur noch, warum in der rsyncd.conf sonst hinter dem Gleichheitszeichen (=) überall ein Leerzeichen steht.

      Gruß
      Arno

  6. Hallo zusammen,
    ich bin mit meinem Vorhaben, Daten vom NAS Laufwerk auf das angestöpselte USB-Laufwerk zu übertragen fast fertig. Ich verwende mehrere rsync Aufrufe die in einer txt Datei gespeichert sind.
    Was mich stutzig macht, dass keine meiner cron jobs überhaupt angestoßen werden. Als test habe ich den aktuellen Zeitstempel in eine Textdatei schreiben lassen. Dies wird leider nie ausgeführt. Der Befehl ist jedoch völlig korrekt.

    Hattet ihr so ein Problem bereits? Gibt es dazu eine Lösung? Ich denke auch, dass ich meinen Cron richtig definiert habe.
    echo „*/5 * * * * date >> /mnt/HD/HD_a2/test.txt“ >> /var/spool/cron/crontabs/root

    Viele Grüße

    1. Hi Dominik,

      du kannst so kontrollieren, ob der cronjob im System auch angekommen ist:

      crontab -l

      Rufst du im Übrigen das folgende Kommando zum Updaten der crontab auf?

      echo "root">> /var/spool/cron/crontabs/cron.update

      Sonst wird cron nie wissen, dass du was neues auszuführen hast 😉

      Viele Grüße,
      Uli

      1. Hallo Uli,
        in meiner crontab ist meine Eingabe angekommen (crontab -l ist gecheckt). Auch das mit echo „…“ habe ich herausgefunden, ansonsten werden meine Befehle nicht erkannt bzw. übernommen.
        Problem: die Datei cron.update existiert bei mir nicht. ich habe das DNS-325 und habe die aktuellste Firmware von Dlink installiert. Auch das aktellste Fun_Plug läuft. Sobald ich Deinen Befehl ausführe wird die Datei zwar erstellt, mir ist allerdings schleierhaft ob sie auch verwendet wird.

        Viele Grüße
        Dominik

  7. Hallo zusammen,

    nun läuft alles prima und ich wollte noch ein paar Infos mehr ins Log-File schreiben.

    Dafür habe ich in der /ffp/etc/rsyncd.conf folgenden Parameter gesetzt:
    log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.

    Aber es funktioniert nicht, egal ob ich es oben einfüge oder unter der Sprungmarke [uwmirrorfolderrsync].

    Weiß jemand, wo ich den Parameter „log format“ setzen kann?

    Gruß
    Arno

  8. Hallo zusammen,

    nachdem alles lief war ich froh, aber nun kommt beim Neustart des Servers in der ffp.log folgende Meldung:
    failed to create pid file /ffp/var/run/rsyncd.pid: File exists

    Und da der rsync-Server nicht läuft funktioniert auch das Backup nicht.

    Kann mir jemand helfen?

    Vielen Dank

    Gruß
    Arno

    1. Hallo zusammen,

      ich konnte das Problem selbst eingrenzen:
      Die Datei /ffp/var/run/rsyncd.pid wird mit bei folgenden Funktionen nicht gelöscht:
      1.)
      Restart oder Shutdown über den Browser-Dialog des CH3MNAS
      2.)
      touch /tmp/shutdown über den SSH-Client
      3.)
      Power-Knopf

      Die einzige Funktion, die den NAS ordentlich herunterfährt und wieder startet ist „reboot“ über den SSH-Client. Nur damit wird die Datei /ffp/var/run/rsyncd.pid gelöscht.

      Somit muss ich bei jedem Herunterfahren des NAS die Datei /ffp/var/run/rsyncd.pid über den SSH-Client manuell löschen und den NAS neu starten.

      Gibt es einen Befehl, der den NAS herunterfährt und dabei wie reboot alle Programme ordentlich beendet?

      Vielleicht kann man solche Funktion auch auf den zweiten Knopf legen, der keine Funktion hat.

      Gruß
      Arno

      1. Hallo zusammen,

        ich konnte das Problem mit der Datei /ffp/var/run/rsyncd.pid wie folgt lösen:

        Nachdem ich den NTP-Zeitabgleich eingerichtet hatte ( siehe: http://wolf-u.li/4613/ntp-zeitabgleich-mit-dem-fonz-fun_plug-0-7/ ) habe ich folgende weitere Zeilen in der Datei fun_plug.local hinzugefügt:
        # Loeschen der Datei /ffp/var/run/rsyncd.pid
        rm /ffp/var/run/rsyncd.pid

        Bei jedem Start des NAS wird nun die Datei gelöscht. Sollte sie nicht vorhanden sein steht im ffp.log:
        rm: cannot remove `/ffp/var/run/rsyncd.pid‘: No such file or directory
        Diese Fehlermeldung stört mich aber nicht, da nun alles bestens funktioniert.

        Gruß
        Arno

  9. Hallo zusammen,
    vieleicht könnt Ihr mir helfen. Habe das besagte D-Link DNS-320.Über die Fernbackupfunktion versuche ich nun auf das RSYNC Protokoll meines Strato HiDrive Laufwerk (welches aktiviert ist) zu zugreifen. Das D-Link akzeptiert aber nur IP adressen, welche aber ständig wechselt. Selbst wenn ich die IP-Adresse eingebe komme ich nicht auf HiDrive drauf. Hat jemand ne Idee ohne das Funplugin, da das alles für mich bömische Dörfer sind.
    THX & Gruß,
    Matthias

  10. Hallo,

    ich habe gerade das fun_plug 0.7 installiert und habe nur ein DNS 323.
    Wie kann ich automatisiert ein regelmäßiges Backup zwischen den beiden HDDs einrichten?

    Gruß
    Marc

  11. Hallo zusammen,
    auch ich habe so wie Sunny, das Problem das ich mein DNS-320 nicht mit HiDrive gesync bekomme. Wenn ich das FunPlugin installiere gibt es dann ein Erweiterungspaket um meine Daten nach Hidrive via rsync (oder FTP,Webdav u.s.w.) zu schaufeln??
    THX
    Sandra

  12. Hallo allerseits,

    beziehe mich auf das o.g. Problem mit der rsyncd.pid, welche beim Starten des rsync-Servers angemahnt wird (Link).

    Ich möchte nur den rsync-Server nutzen, da dieser direkt von meiner Synology DS211 als Backup-Ziel angesprochen werden soll. Daher habe ich nur das Tutorial für das Szenario „NAS Alice“ umgesetzt.

    Leider haben die genannten Korrekturen in /ffp/start/rsyncd.sh (wie hier) nicht geholfen. Diese waren bereits beim heutigen Download der rsync-Konfiguration korrekt enthalten . Dennoch startet der Server nicht.

    Bin für jeden Tipp dankbar.


    Hartmut

  13. Auch mich würde interessieren, ob ich irgendwie die Möglichkeit habe, mein HiDrive einzubinden. Ich kann zwar alle Daten eingeben (die IP der HiDrive rsync Adresse bekommt man ja durch einen Ping 😉 , allerdings will er dann, dass ich einen Ordner auswähle, welcher aber nicht auswählbar ist. Auch das anlegen eines neuen Ordners im HiDrive machte keine Änderung.

  14. Hallo, ich kann seit neuestem den Buchstaben „a“ nicht mehr in der shell schreiben und auch nicht mit copy&paste einfügen! Kann mich aber nicht erinnern irgendwas an dem Gerät geändert zu haben. Hattet Ihr schon mal so ein Problem? Eigentlich wär’s mir egal, aber ich kann nun aber leider kein „start“ mehrt schreiben, da nur ein „strt“ dort steht, egal was ich mache, und dadurch natürlich nichts mehr starten kann.
    Was könnte das nun sein?

  15. Danke für die Anleitung! Ich konnte so wunderbar ein Backup meiner neuen DNS-327L auf meine alte DNS-323 einrichten. Hab das ganze etwas umgeschrieben, damit die alten Backups als historische Stände erhalten bleiben. Nice 🙂

  16. Danke Uli für die tolle Anleitung, genau das was ich gesucht habe. Es funktioniert auch alles super! Nun möchte ich gern 3 verschiedene Verzeichnisse synchronisieren (

    /mnt/HD/HD_a2/Dir* bzw. Volume_1\Dir1, Volume_1\Dir2, Volume_1\Dir3

    ). Die Ordnerstruktur möchte ich möglichst unverändert lassen. Wenn es überhaupt möglich ist, wie muss ich die beiden Files anpassen damit es läuft? Wäre nett wenn hier jemand sein Wissen mit mir teilt. Dankeschön!

    Vivo

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.