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

Es gibt eine einfache Möglichkeit seine Musik-Bibliothek von einem Synology NAS auf einen USB-Stick  (*) der an einem Raspberry Pi mit mpd angeschlossen ist regelmäßig und automatisch zu übertragen.

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 wiedergeben zu können.

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 den Pi zum aktualisieren ein wenig aufwendig ist, habe ich einen anderen Weg gewählt. Meine gesamte Musik synchronisiere (2-Wege-Sync) ich von meinem Windows 10 Client 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 kleinen Prozess 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

Auf den Raspberry Pi  (*) kopiert ihr das folgende Skript in ein Verzeichnis, z.B. /etc/skripte und benennt es synologynas.sh. Passt es vorher noch an eure Umgebung an.

#!/bin/bash

# by strobelstefan.org
# Version: 1.0
# https://strobelstefan.org/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/Musik/"

#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

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.


AngebotBestseller Nr. 2
Bestseller Nr. 3
AffiliateLinks/Werbelinks / Bildquelle: Amazon-Partnerprogramm / (**)
Photo by Alex Cheung on Unsplash

(**) Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Schreibe einen Kommentar

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