Dateien-Sync zur Synology DiskStation mit rsync, SSH und einem YubiKey

Ein Backup auf die Synology DiskStation lässt sich mit Synology Drive sehr einfach einrichten. Damit funktioniert die Datensicherung auf einwandfrei, solange man nur eine IP-Adresse anstatt einem Domainname mit Zertifikat für das Gerät verwendet.

Dann kann das mit Synology Drive recht nervig werden.

Nach dem Aktualisieren des Let’s Encrypt Zertifikats läuft das Ganze für ~90 Tage, dann ist das Zertifikat zu erneuern. Und ab da macht es mit Synology Drive keinen Spaß mehr. Der Client verweigert die Verbindung zur DiskStation, da eben eine neues Zertifikat vorhanden ist. Abhilfe schafft das komplette Neueinrichten des Backups, danach funktioniert es wieder, eben für ~90 Tage. Einfach nur nervig!

Das Backup soll einfach laufen und funktionieren!

Nextcloud im Container – Flexible Installation mit Docker

Nextcloud ist ein sehr populärer freier, selbst-hostbarer Cloudservice, für das Speichern von Daten (z. B. Dateien, Kalender, Kontakte etc.) auf einem Server.
Der Server benötigt dafür den Dienst keine großen Ressourcen und kann deshalb ein kleiner Einplatinenrechner, wie der Raspberry Pi, sein. Die Installation von Nextcloud mit Hilfe von Docker Images ist relativ einfach umzusetzen, was die Einsatzmöglichkeiten und die Flexibilität noch erhöhen.

In diesem Beitrag wird Nextcloud und die notwendigen Tools ausschließlich mit Docker Containern installiert und konfiguriert.

rsync zu Synology und mit einem YubiKey vereinfachen und absichern

Im letzten Beitrag habe ich beschrieben, wie man mit einem Shell-Skript eine Datensicherung von einem Mac mit dem Tool rsync auf ein Synology NAS erstellt.

Mit einem YubiKey lässt sich die Authentifizierung am Synology sehr einfach durch rsync durchführen. Das Mounten des freigegebenen Synology Ordners auf dem Mac ist nicht mehr erforderlich.
rsync erhält direkten Zugriff auf die Synology durch den auf dem Hardwaretoken hinterlegten Key, natürlich nach Eingabe des korrekten PINs.

Synology NAS – Backup-Dump von Gitea Docker-Container erstellen

Photo by Markus Spiske on Unsplash

Meine Gitea-Instanz läuft seit einiger Zeit auf meiner Synology NAS in einem Docker-Container, jedoch ohne eine Sicherung. Ohne ein komplettes Backup ist es auch schwer Gitea mal auf einen anderen Server umzuziehen. Gitea bietet da zum Glück eine recht einfache Möglichkeit einen vollständigen Dump zu erstellen. Der enthält alle Daten und kann auf einem neuen Server wieder hergestellt werden.

Synology-Backup per rsync automatisch zu openmediavault sichern

Photo by Michael Dziedzic on Unsplash

Die Daten und die Einstellungen einzelner Pakete eines Synology NAS lassen sich mit rsync regelmäßig und automatisch zu einem openmediavault sichern.
Das Synology fungiert dabei als Client und sendet die Daten an den rsync-Server, der auf dem openmediavault läuft. Die Authentifizierung erfolgt über Benutzernamen und Passwort und kann durch das Synology auch verschlüsselt werden.

Datensynchronisation vom Synology NAS auf den Raspberry Pi mit NFS und rsync

Photo by Alex Cheung on Unsplash

Es gibt eine einfache Möglichkeit seine Musik-Bibliothek von einem Synology NAS auf einen USB-Stick oder eine externe Festplatte die an einem Raspberry Pi angeschlossen ist regelmäßig und automatisch zu synchronisieren.

In einem Beitrag habe ich beschrieben, wie man einen Raspberry Pi (= RadioPi) an eine Stereoanlage anschließen kann, um dort seine Musik mit mpd auf der Stereoanlage zu hören.

Raspberry Pi – Musik auf der Stereoanlage wiedergeben

An meinem Raspberry Pi habe ich einen USB-Stick angeschlossen, auf dem meine gesamte Musikbibliothek abgelegt ist. Damit ist jederzeit gewährleistet, dass ich auch bei einer hohen Netzwerklast oder -ausfall Musik hören kann. Zudem dient mir das Ganze noch als eine Art Datensicherung.

Da aber ein manuelles Kopieren auf dem Pi zum Aktualisieren ein wenig aufwendig ist, habe ich einen anderen Weg gewählt. Meine gesamte Musik synchronisiere (2-Wege-Sync) ich von meinem Laptop mit der Desktop-Software Synology Drive Client auf mein Synology NAS.

Das NAS läuft zu den Zeiten, an denen ich auch mit meinen RadioPi Musik höre. Somit habe ich einen kleines Skript eingerichtet, um die Musik zu synchronisieren und damit auf dem Pi aktuell zu halten.

Datenaustausch per NFS
Datenaustausch per NFS

Der Ablauf ist

  • Synology – Gemeinsamer Ordner Musik wird für NFS freigegeben und die entsprechenden Berechtigungen gesetzt
  • Raspberry Pi – mountet beim Systemstart automatisch den Synology Ordner Musik per NFS
  • Raspberry Pi – wirft den Synology NFS Ordner Musik aus
  • Raspberry Pi – ein Bash-Skript startet rsync und führt ein Update der mpd-Datenbank durch

Synology NAS Einstellungen

Ihr müsst NFS in der Systemsteuerung eures NAS aktivieren.

Synology NAS - NFS aktivieren
Synology NAS – NFS aktivieren

Damit der Raspberry Pi auch die Berechtigung erhält auf den Gemeinsamen Ordner lesend zugreifen zu können, sind die Berechtigungen zu setzen. Ihr benötigt dazu lediglich die IP-Adresse eures RadioPis.

Synology NAS - Berechtigungen für Gemeinsamen Ordner
Synology NAS – Berechtigungen für Gemeinsamen Ordner
Synology NAS - Berechtigungen für Gemeinsamen Ordner
Synology NAS – Berechtigungen für Gemeinsamen Ordner

Raspberry Pi – RadioPi

Damit die NFS-Freigabe auch auf dem Pi gemountet werden kann, ist dort ein neuer Ordner zu erstellen:

sudo mkdir /mnt/synology

Auf den Raspberry Pi kopiert ihr das folgende Skript in ein Verzeichnis, z.B. /etc/skripte und benennt es synologynas.sh.

#!/bin/bash

# by strobelstefan.org
# Version: 1.0
# https://strobelstefan.de/2021/04/04/datensynchronisation-vom-synology-nas-auf-den-raspberry-pi-mit-nfs-und-rsync


# This script mount a Synology Shared Folder via NFS
# It runs rsync to update a local directory
# Unmounts the Synology NFS
# Updates mpd server


#Source patch
SOURCE="/mnt/synology/"

#Target path on BACKUPSTORAGE
TARGET="/mnt/usb/Musik/"

# Logfile
LOGFILE="/mnt/usb/logfile.txt"

#Exclude from RSYNC file
EXCLUDEFILE="excludefile.txt"

# Removes the old log file
echo "###############################" >> ${LOGFILE}
rm -f ${LOGFILE}
echo $(date +%Y-%m-%d_%H-%M-%S) " - Deleted Old Log File ${LOGFILE}" >> ${LOGFILE}
echo "###############################" >> ${LOGFILE}

# Mount Synology NFS
sudo mount 192.168.xxx.xxx:/volume1/music ${SOURCE}
echo "###############################" >> ${LOGFILE}
echo $(date +%Y-%m-%d_%H-%M-%S) "- Mounted Synology NFS Share" >> ${LOGFILE}
echo "###############################" >> ${LOGFILE}

# rsync mit  Log Files
echo "###############################" >> ${LOGFILE}
echo $(date +%Y-%m-%d_%H-%M-%S) " - rsync started" >> ${LOGFILE}
sudo rsync -av --stats --exclude-from=${EXCLUDEFILE} --delete --log-file=${LOGFILE} ${SOURCE} ${TARGET}
echo $(date +%Y-%m-%d_%H-%M-%S) " - rsync finished" >> ${LOGFILE}
echo "###############################" >> ${LOGFILE}

# Unmout Synology NFS
echo "###############################" >> ${LOGFILE}
sudo umount ${SOURCE}
echo $(date +%Y-%m-%d_%H-%M-%S) " - Unmounted Synology NFS share" >> ${LOGFILE}
echo "###############################" >> ${LOGFILE}

# mpd Rescan
echo "###############################" >> ${LOGFILE}
sudo mpc update
echo $(date +%Y-%m-%d_%H-%M-%S) " - mpd update finished" >> ${LOGFILE}
echo "###############################" >> ${LOGFILE}

Macht das Skript noch ausführbar:

sudo chmod +x /etc/skripte/synologynas.sh

Den Pfad zum Ordner auf dem Synology NAS lässt sich wie folgt herausfinden:

1. „Control Panel –> Shared Folders“ aufrufen. Dort sieht man, dass der Ordner auf dem „Volume1“ abgespeichert ist.
Synology NFS Share
Synology NFS Share
2. SSH-Login auf dem NAS
ssh benutzer@ip-adresse-des-nas

cd /volume1

# Ordner anzeigen

ls -lah

cd /volume1/music

# Pfad anzeigen
pwd
Den angezeigten Pfad kopieren und in das Skript einfügen, damit der Ordner auch korrekt auf dem Raspberry Pi eingebunden wird.

Das Skript könnt ihr nun schon ausführen und testen. Ruft es dazu mit dem Befehl auf:

sudo ./etc/skripte/synologynas.sh

Ist euer Skript erfolgreich durchgelaufen, dann ist zum Schluss noch ein Cron Job anzulegen.

Cron Job

Der Cron Job führt das Skript bei jedem Neustart aus, wartet aber noch 600 Sekunden. Das kann u.U. sinnvoll sein, wenn der Pi noch andere Programm startet oder andere Skripte beim Systemstart ausführt.

@reboot sleep 300 && /etc/skripte/synologynas.sh

Das wars!

Nun wird jede Änderung an eurer Musiksammlung, die ihr entweder an eurem Windows-Client oder auf dem Synology NAS durchführt automatisch auf den RadioPi übertragen.


Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


Probleme mit nfs

Beim Versuch den freigegebenen Ordner auf dem Raspberry Pi einzubinden habe ich einen Fehler erhalten: mount.nfs: rpc.statd is not running but is required for remote locking. mount.nfs: Either use ‚-o nolock‘ to keep locks local, or start statd.
sudo mount 192.168.xxx.xxx:/volume1/music /mnt/usb/Musik/
Die benötogten Pakete auf dem Pi waren alle vorhanden:
sudo apt install nfs-common 
Das Starten der Services hat zu weiteren Fehlermeldungen u.a. mit dem Portmapper und rpcbind geführt. Die Lösung ware dann doch ganz einfach. Auf der Synology war die NFS-Freigabe komplett zu deaktivieren, abzuspeichern und dann zum Schluss wieder zu aktivieren. Das Mounten der NFS-Freigabe hat dann sofort funktioniert auf dem Pi.
Synology NFS-Server deaktivieren / aktivieren
Synology NFS-Server deaktivieren / aktivieren
Photo by Alex Cheung on Unsplash