Datensicherung nach Synology mittels rsync und NFS einrichten

Dieser Artikel beschreibt, wie wir mit rsync Daten oder Verzeichnisse auf ein Synology NAS synchronisieren. Anschließend erstellen wir einen Cronjob, um die Backups regelmäßig durchzuführen.
Was ist rsync?
Rsync[1] steht für Remote Sync. Hierbei handelt es sich um ein Programm, welches Dateien und Verzeichnisse synchronisiert. Dadurch können Ordner oder einzelne Dateien an einen anderen Ort synchronisiert werden. Ein Vorteil von rsync ist, dass nur Dateiunterschiede (Deltas) übertragen werden. Durch dieses Vorgehen wird der Kopierprozess stark beschleunigt.
Rsync ist Standardmäßig unter Linux installiert und arbeitet unidirektional. Da wir in diesem Beispiel unser aktuelles Arbeitsverzeichnis extern sichern, eignet sich das Programm optimal.
Ordner für Backup erstellen
Zu Beginn benötigen wir einen gemeinsamen Ordner. Hierzu melden wir uns auf dem NAS an und erstellen einen „gemeinsamen Ordner“.

Ordner anlegen via Synology DiskStation
Hierzu melden wir uns auf der Synology NAS an, öffnen die Systemsteuerung und wählen „Gemeinsamer
Ordner“ aus. Anschließend kann ein neuer Ordner über den Button „Erstellen“ erstellt werden. Ich
habe meinen Ordner Backup_NFS
genannt.
Anschließend wählen wir den neuen Ordner aus und wählen „Bearbeiten“. Dies kann entweder mittels Rechtsklick oder dem oberen Button geschehen. Danach öffnen wir die „NFS-Berechtigungen“.

Einstellungen eines gemeinsamen Ordners bearbeiten

NFS-Einstellungen für den neuen Ordner
Die Liste der erlaubten Clients ist leer. Dadurch hat niemand auf diesen Ordner Zugriff. Durch den Button „Erstellen“ können wir einem neuen Client die Freigabe erteilen.

Erstellen eines NFS-Clients
Als Beispiel habe ich Hostname01
verwendet. Es ist auch möglich Wildcards, IP-Adressen oder
IP-Bereiche festlegen. Ohne den Hostnamen oder die IP erhält der Client eine Fehlermeldung wie
„Zugriff verweigert“.
Das NFS-Protokoll ist so aufgebaut, dass eine Autorisierung nur gegenüber Hostnamen oder IP-Adressen erfolgt. Eine Anmeldung mit Benutzername und Kennwort ist mittels NFS nicht möglich.
Eventuell müsst ihr das Protokoll vorher in eurem NAS aktivieren. Öffnet hierzu die Systemsteuerung. Die Einstellung befindet sich unter „Dateidienste“ im ersten Tab „SMB/AFP/NFS“. Setzt ganz unten den Haken für „NFS aktivieren“.
Ordner in Linux einbinden
Hierfür habe ich mich per SSH auf meinem Raspberry mit Raspbian verbunden. Auf dem Raspberry befindet sich mein Git-Server. Ich habe Gitea[2] installiert, da diese Software sehr klein ist und nicht viele Ressourcen beansprucht. Sie ist somit optimal für den Raspberry 🙂 Vorher habe ich Gitlab[3] verwendet. Allerdings gibt es dafür keine aktualisierten Images mehr.
Als Erstes brauchen wir einen lokalen Ordner zum Einbinden des Netzlaufwerkes. Meiner liegt
unter /mnt/Synology
. Anschließend binden wir das Laufwerk lokal ein:
# Lokalen Ordner erstellen
sudo mkdir /mnt/Synology
Ordner von Synology einbinden
sudo mount SynologyHOST:/volume1/Backup_NFS /mnt/Synology
Beachtet dabei folgende Dinge:
SynologyHOST
ist der Hostname vom NAS. Hier müsst ihr euren Namen oder die IP-Adresse (z.B. 192.168.2.100) eintragen./volume1/Backup_NFS
ist der Name des Ordners. Den Pfad hierzu wird euch in den NFS-Einstellungen ganz unten angezeigt.
Wenn ihr die Verbindung trennen wollt, nutzt folgenden Befehl:
sudo umount /mnt/Synology
Damit wird das Netzlaufwerk wieder ausgeworfen.
Synchronisieren eines Ordners
Nun nutzen wir rsync, um einen Ordner auf das Netzlaufwerk zu synchronisieren. Der Aufruf erfolgt
nach dem Schema
rsync -PARAMETER QUELLE ZIEL
.
Nun synchronisiere ich meinen Gitea-Ordner auf das NAS:
rsync -Pav gitea /mnt/Synology/
Der Befehl ist folgendermaßen aufgebaut:
- rsync = Programmaufruf
- -Pav = Parameter für den Aufruf
- P = Partielle Datenübertragung. Datei wird bei Verbindungsabbruch nicht gelöscht
- a = Archivierung aktivieren. Dadurch werden unter anderem die Unterordner rekursiv ergänzt
- v (verbose) = Erhöht die Ausgabe auf der Konsole. Für Demonstrationszwecke 🙂
- gitea = Mein lokaler Ordner auf dem Raspberry
- /mnt/Synology = Der Netzwerkordner, den wir vorher mit
mount
eingebunden haben
Automatisierung mittels Cronjob
Cronjobs sind Aufgaben, die zu einem bestimmten Zeitpunkt ausgeführt werden. Sie sind vergleichbar mit den Aufgaben der Windows Aufgabenplanung. Da ich mehrere Ordner sichern möchte, habe ich mit dem Nano-Editor eine neue Datei (backup.sh) erstellt. Diese Skriptdatei beinhaltet die rsync Aufrufe. Der Cronjob führt das Skript zeitgesteuert aus.
Erstellen wir zuerst die Skriptdatei.
nano backup.sh
Anschließend füllen wir diese Datei mit ein paar Aufrufen an rsync:
#!bin/bash
SYNC_TARGET=/mnt/Synology
rsync -Pa gitea $SYNC_TARGET --delete
rsync -Pa gitea-repositories $SYNC_TARGET --delete
Ich habe dabei den Aufruf leicht abgeändert. Den Parameter v habe ich entfernt und –delete ergänzt. Dadurch werden lokal gelöschte Dateien auch im Backup entfernt. Um mir Tipparbeit zu sparen habe ich eine Variable SYNC_TARGET angelegt. Falls sich das Verzeichnis ändert, muss ich nur eine Zeile anpassen. Variablen werden mit einem $ (Dollarzeichen) ausgewertet.
Zum Abschluss rufen wir crontab -e
auf und fügen eine Zeile ein, um das Backup zu automatisieren:
# m h dom mon dow command
0 5 * * * bash /home/pi/backup.sh
Hierdurch die Skriptdatei jeden Tag um 5 Uhr morgens aufgerufen und ausgeführt.
Zum Abschluss sehen wir uns den Ordner mittels File Manager auf dem Synology an.

Ordnerstruktur nach Synchronisierung
Hier sehen wir, dass beide Ordner synchronisiert wurden. Falls nun der Raspberry oder die Speicherkarte kaputtgehen, sind meine Daten immer noch gesichert.
Fazit
Wir haben gesehen, dass die Einbindung von NFS, rsync und einem cronjob recht einfach erledigt ist. In einer Umgebung mit verschiedenen Benutzern und Zugriffsrechten wird sich NFS wahrscheinlich nicht eignen. Hier sollte man eher SMB verwenden.
Wie ist eure Meinung hierzu? Was ist euer Weg, um Datensicherungen regelmäßig anzulegen?
Bildnachweis: Pixabay.com