Tutorial: Raspberry Pi als rsync-Server für Backup der DS basteln

Polarlys

Benutzer
Mitglied seit
28. Nov 2014
Beiträge
161
Punkte für Reaktionen
0
Punkte
16
Ich möchte Euch hier ein kleines Bastel-Projekt zum Backup der DS mit einem Raspberry über das rsync-Protokoll vorstellen. Ich habe im Internet eine Weile gebraucht, bis ich mir alle Infos zusammengesucht hatte und möchte hier meine Erfahrungen mit Euch teilen, vielleicht hilft es dem einen oder anderen...

Zunächst einen RasPi mit aktuellem Raspian-Image vom 24.12.2014 aufsetzen (setze ich als bekannt voraus).

Dann gehts auch schon los:

Rich (BBCode):
sudo raspi-config

Expand Filesystem
Ländereinstellungen anpassen
Über Erweitert -> Hostnamen ändern (ich habe meinen RasPi "rsyncserver" genannt) dem RasPi einen eindeutigen Namen zuordnen

Betriebssystem auf den aktuellen Stand bringen:
Rich (BBCode):
sudo apt-get update && sudo apt-get upgrade -y
sudo rpi-update

Um dem RasPi im Netz über seinen Hostnamen erreichen zu können, zunächst den Avahi-Daemon installieren und beim booten automatisch starten lassen:
Rich (BBCode):
sudo apt-get install avahi-daemon
sudo update-rc.d avahi-daemon defaults
Ab sofort ist der RasPi auch unter rsyncserver.local (falls Ihr den gleichen Hostnamen wie o.a. verwendet habt) zu erreichen.

Um ein paar Infos über den RasPi zu erhalten, habe ich den "RPi-Monitor" mit folgenden Befehlen installiert:
Rich (BBCode):
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 2C0D3C0F
sudo wget http://goo.gl/rsel0F -O /etc/apt/sources.list.d/rpimonitor.list
sudo apt-get update
sudo apt-get install rpimonitor
Künftig könnt Ihr über http://rsyncserver.local:8888 Infos über den Zustand Eures Rsync-Servers erhalten

Die Website des RPi-Monitors ist hier: https://github.com/XavierBerger/RPi-Monitor-deb/tree/master/packages

Nun wird eine externe Festplatte an die DS angeschlossen und über Systemsteuerung -> Externe Geräte mit EXT4 formatiert.
Dann die externe Festplatte an den RasPi anschliessen.

Die Einbindung beim Booten erfolgt folgendermassen:
Zunächst mit
Rich (BBCode):
sudo blkid
die UUID der Festplatte auslesen.
Dann die /etc/fstab anpassen:
Rich (BBCode):
sudo nano /etc/fstab
und folgende Zeile unten anhängen (die UUID natürlich anpassen):
Rich (BBCode):
UUID="a46cb789-33c6-4310-8068-77976e12345" /media/backup ext4 defaults 0 0

Nun noch den Ordner auf dem RasPi anlegen, wo die Festplatte gemountet werden soll:
Rich (BBCode):
sudo mkdir /media/backup

Nun die Festplatte mounten:
Rich (BBCode):
sudo mount -a

Der folgende Teil stammt aus dem Raspberry-Pi-Forum (vielen Dank an dieser Stelle für die gute Erklärung dort!):
http://www.forum-raspberrypi.de/Thread-tutorial-synoraspi-backup-vom-nas-auf-den-raspi

Nun rsync installieren (falls nicht schon installiert)
Rich (BBCode):
sudo apt-get install rsync

/etc/default/rsync anpassen:
Rich (BBCode):
sudo nano /etc/default/rsync
RSYNC_ENABLE=true
RSYNC_CONFIG_FILE=/etc/rsyncd.conf

Nun rsyncd.conf anlegen:
Rich (BBCode):
sudo nano /etc/rsyncd.conf

Dateiinhalt soll so aussehen:
Rich (BBCode):
max connections = 2
log file = /var/log/rsync.log
timeout = 300
 [Syno-Backup]
comment = Rsync für Synology-NAS
path = /media/backup
read only = no
list = yes
uid = kschi
gid = kschi
auth users = syno
secrets file = /etc/rsyncd.secrets.syno

Nun das Secrets-File für das Passwort erstellen:
Rich (BBCode):
sudo nano rsyncd.secrets.syno

Mit folgendem Inhalt (Benutzername:passwort), password natürlich anpassen:
Rich (BBCode):
syno:password

Dann die Rechte der Datei anpassen:
Rich (BBCode):
chmod 600 /etc/rsyncd.secrets.syno

Den User "syno" anlegen:
Rich (BBCode):
sudo adduser syno –system –group –no-create-home –shell /bin/false

Dann für den User noch ein Verzeichnis auf der externen HDD anlegen und die Berechtigung setzen:
Rich (BBCode):
cd /media/backup
sudo mkdir syno
sudo chown syno:syno /media/backup/syno –R

Jetzt kann auf der DS unter Datensicherung/Replikation ein neuer Backup-Job angelegt werden ("Auf rsync-Server"). Dort die IP-Adresse des RasPi, den eben angelegten Benutzer syno und dessen Passwort eingeben. Unter "Backup-Modul" sollte nun "Sync-Backup" erscheinen.
Ich habe die erste Synchronisation per LAN durchgeführt, was mit ca. 3-5MB/s erfolgte (meine DS214play war mit ca 30% CPU beschäftigt, ich denke, dass 100MBit-LAN des RasPi ist hier der Flaschenhals). Bei 1,5TB an Daten auf der DS hat das ganze 4,5 Tage gedauert.
Dann habe ich ein WLAN-Modul an den RasPi gebastelt, um ihn etwas versteckter im Haus platzieren zu können (LAN-Kabel sind bei mir leider nicht überall möglich).
Hierbei sind noch folgende Anpassungen der Konfiguration nötig:
Modifikation der /etc/network/interfaces:
Rich (BBCode):
sudo nano /etc/network/interfaces

Die Datei sollte folgenden Inhalt haben (die IPs an Eure Gegebenheiten anpassen):
Rich (BBCode):
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.xxx.xxx   #statische IP des RasPi
netmask 255.255.255.0
gateway 192.168.xxx.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Die /etc/wpa_supplicant/wpa_supplicant.conf enthält die Information über das heimische Netzwerk und muss noch angepasst werden:
Rich (BBCode):
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Die Datei hat folgenden Inhalt:
Rich (BBCode):
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
# Die Gruppe muss natürlich angepasst werden
eapol_version=1
# 0: Der Treiber des Interfaces kümmert sich um das Scannen von Netzen und die AP-Auswa$
# Dieser Modus sollte benutzt werden, wenn man eine Verschlüsselung auf ein Kabelnet$
# 1: wpa_supplicant kümmert sich um das Scannen von Netzen und die AP-Auswahl.
# 2: Fast wie 0, es wird aber mit Hilfe von Sicherheitsrichtlinien und der SSID zu APs $
#
# Normalerweise funktioniert entweder Modus 1 oder Modus 2.
ap_scan=1
network={
ssid="DEIN_NETZWERKNAME"
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="DEIN_PASSWORT"
}

Nun läuft die weitere Synchronisation über WLAN natürlich langsamer als über Kabel, aber da nur noch Änderungen gesynct werden, ist die Datenmenge nicht mehr so groß.
EDIT: Leider scheint die WLAN-Verbindung nicht stabil genug, um große Datenmengen zu syncen, ist also nur ein ungenügender Ersatz für das LAN-Kabel, mit dem das Ganze aber super funktioniert.
Ich habe den RasPi mit dem raspi-config noch leicht übertaktet, mal sehen ob´s was bringt...
Viel Spaß mit Eurem low-cost-rsync-server!

PS: Habe das Tutorial aus dem Kopf geschrieben, daher sind kleine Fehler möglich :)
 
Zuletzt bearbeitet:

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.659
Punkte für Reaktionen
958
Punkte
734
Holla, wirklich beeindruckend. Geht in die Richtung von Tommes' Thread nur umgekehrte Sync-Richtung.
 

jugi

Benutzer
Mitglied seit
07. Apr 2011
Beiträge
1.853
Punkte für Reaktionen
0
Punkte
56
Sehr geile Idee! Werde ich bei Zeiten auch mal testen. (~März)
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.074
Punkte für Reaktionen
1.061
Punkte
314
Auch von mir ein großes Lob dafür. Wirklich super Arbeit und auch super Anleitung.

Und wie dil88 schon erwähnte, habe ich den umgekehrten Weg beschrieben um den RasPi (oder Teile davon) auf der DS zu sichern. So schließt sich also der Kreis.

Tommes
 

ChiliApple

Benutzer
Mitglied seit
04. Dez 2013
Beiträge
240
Punkte für Reaktionen
7
Punkte
24
lässig danke, werd das auf meinen BananaPi übertragen und mal sehen ob er mit einer 6TB Platte zurecht kommt (4TB schafft er sicher), wäre klasse Backup für mich …
 
Zuletzt bearbeitet:

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.074
Punkte für Reaktionen
1.061
Punkte
314

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
9.606
Punkte für Reaktionen
3.381
Punkte
364
Sehr nett, jetzt wird wieder am Pi gebastelt - nachdem ich ihn nach AFT (mit Kodi drauf) Kauf eingemottet habe.
Danke, genau die Lösung für mein Backup.
 

Polarlys

Benutzer
Mitglied seit
28. Nov 2014
Beiträge
161
Punkte für Reaktionen
0
Punkte
16
Hallo!
Ich habe mittlerweile auch eine Lösung zur Vermeidung der häufigen Verbindungsabbrüche bei der WLAN-Übertragung der Sicherung auf den RasPi-rsync-Server gefunden:
Ein Script überprüft periodisch auf das Vorhandensein der WLAN-Verbindung und stellt diese bei Bedarf sofort wieder her. Das ganze wird per Cronjob bei mir 1x/Minute durch den RasPi ausgeführt (ihm soll ja nicht langweilig werden...).
So ist bei mir auch das Backup über WLAN korrekt durchgelaufen.
Das Script und alle nötigen Codeschnipsel sind hier zu finden (vielen Dank dafür!)
http://www.gtkdb.de/index_36_2504.html
 

Polarlys

Benutzer
Mitglied seit
28. Nov 2014
Beiträge
161
Punkte für Reaktionen
0
Punkte
16
Sehr interessant. Ich glaube, dass der GBit-LAN-Port des Banana-Pi den Unterschied ausmacht. Denn während des Backups hat mein RasPi durchaus noch CPU-Reserven.
Wobei mein letztes Backup übers WLAN in 9 Minuten abgeschlossen war. Änderungen mit kleinen Dateimengen gehen dann, wenn der erste Sync durch ist auch am RasPi schnell.
 

ChiliApple

Benutzer
Mitglied seit
04. Dez 2013
Beiträge
240
Punkte für Reaktionen
7
Punkte
24
ja der GBit LAN is klasse, hab ihn als FHEM Server, AirplayServer, und nun RsyncServer, nachdem ich ihn als Ersatz vom zu langsamen Raspy verwende.
davor hab ich eine DLink DNS-323 mit rsync Server ausgestattet und verwendet. Trotz Gibt LAN waren (mit diesem NAS typisch) nur 4-7MB/s möglich …

ich meine Übrigens das du einen Fehler in deiner Anleitung hast (kann mich auch täuschen) in der config: uid = kschi gid = kschi, die beiden Gruppen müssen bei mir syno heißen, und der Pfad stimmt nicht überein wenn du im /media/backup/ noch den Ordner syno einrichtest …
 

Polarlys

Benutzer
Mitglied seit
28. Nov 2014
Beiträge
161
Punkte für Reaktionen
0
Punkte
16
Jupp, da hast Du ganz recht, danke für den Hinweis. Richtig muss es heißen:

max connections = 2
log file = /var/log/rsync.log
timeout = 300
[Syno-Backup]
comment = Rsync für Synology-NAS
path = /media/backup/syno
read only = no
list = yes
uid = syno
gid = syno
auth users = syno
secrets file = /etc/rsyncd.secrets.syno

So sollte es klappen :)
 

Polarlys

Benutzer
Mitglied seit
28. Nov 2014
Beiträge
161
Punkte für Reaktionen
0
Punkte
16
Zum weiteren Optimieren des rsync-Servers habe ich noch ein schönes Script zum automatischen Update des RasPi mit anschließendem Reboot im Web gefunden:
http://www.forum-raspberrypi.de/Thread-automatisch-neustarten-und-updates?page=2

Erstellt nach diesen Vorgaben eine Datei:
mkdir /home/pi/scripts
cd /home/pi/scripts
nano updateandreboot.sh

Den Inhalt des Scripts aus der o.g. Website in die Datei einfügen und vor der letzten Zeile ("exit 0") noch ein "reboot" einfügen.

Das Script ausführbar machen:
sudo chmod +x /home/pi/scripts/updateandreboot.sh

Das Script wird dann in die crontab von root eingetragen und einmal täglich gestartet (optimalerweise vor dem eigentlichen geplanten täglichen Backup mit ausreichendem Zeitabstand):
sudo crontab -e

Unten an die Datei anhängen:

# Das Script zum Update des RPi mit anschließendem Reboot soll 1x/Tag um 02:00 Uhr
# ausgeführt werden:
0 2 * * * sudo bash /home/pi/scripts/updateandreboot.sh

Fertig :)
 

Polarlys

Benutzer
Mitglied seit
28. Nov 2014
Beiträge
161
Punkte für Reaktionen
0
Punkte
16
Um den rsync-Server noch etwas wartungsärmer zu gestalten, bietet es sich an, den Hardware-Watchdog des RasPi zu aktivieren, der im Falle eines Absturzes des kleinen Geräts, den RasPi automatisch neu bootet.
Das funktioniert auch dann noch, wenn der RasPi eigentlich "eingefroren" ist.

Zunächst muss er aktiviert werden:
$ sudo modprobe bcm2708_wdog
$ echo "bcm2708_wdog" | sudo tee -a /etc/modules

Dann Installation des Watchdog-Daemons:
$ sudo apt-get install watchdog

Als nächstes wird die Konfigurationsdatei angepasst:
$ sudo nano /etc/watchdog.conf

Viele Einstellungen sind auskommentiert. Bitte das # vor diesen beiden Zeilen entfernen:
watchdog-device = /dev/watchdog
max-load-1 = 24

Nun noch den Watchdog starten:
$ sudo /etc/init.d/watchdog start

Testen, ob alles funktioniert, kann man mit folgendem Kommando:
$ sudo cat > /dev/watchdog
Nun sollte der RasPi innerhalb einer Minute neu starten.
 

Polarlys

Benutzer
Mitglied seit
28. Nov 2014
Beiträge
161
Punkte für Reaktionen
0
Punkte
16
So, nach knapp 14 Tagen Testbetrieb des RasPi-rsyncservers muss ich sagen: Es funktioniert! Ich habe den automatischen Reboot/Updatevorgang auf 1x/Woche reduziert und den Test auf die Netzwerkschnittstelle in der crontab nur noch alle 5 Minuten laufen lassen - damit treten bei mir keine Verbindungsabbrüche übers WLAN auf und das Backup läuft fehlerfrei durch.
Meist werden bei mir so 5-10GB an laufenden Daten übertragen und der RasPi ist damit ca. 1-2h übers WLAN beschäftigt.
Man kann dieses Projekt also durchaus weiterempfehlen.
 

Dennis1002

Benutzer
Mitglied seit
06. Nov 2014
Beiträge
306
Punkte für Reaktionen
1
Punkte
0
...erstmal danke für das Tutorial!

Ich habe mich jetzt durch die Anleitung gearbeitet und das Backup funktioniert tadellos.

Eine Sache stört mich allerdings:
Auch nach einem abgeschlossenen Backup wird permanent auf die am Pi angeschlossene USB-Festplatte zugegriffen. Warum?
Ich hätte gerne, dass die HDD zwischen den Backups in den Ruhezustand geht. Lässt sich das irgendwie machen?
 

Polarlys

Benutzer
Mitglied seit
28. Nov 2014
Beiträge
161
Punkte für Reaktionen
0
Punkte
16

Dennis1002

Benutzer
Mitglied seit
06. Nov 2014
Beiträge
306
Punkte für Reaktionen
1
Punkte
0
Das werd ich mal testen, wenn ich wieder Zeit finde, auch wenn der erste Post nach dem Tutorial ja nicht sehr vielversprechend klingt.

Nein, der RasPi ist komplett neu aufgesetzt. Es ist nur htop installiert worden und dann habe ich mich strikt an die Anleitung aus Post #1 gehalten.

Ich kann mir auch vorstellen, dass die Platte nicht in den Ruhezustand geht, weil sie ja eben nicht im Leerlauf ist, sondern ständig darauf zugegriffen wird. Die Frage ist nur, wer oder was greift auf die Platte zu, wenn garnicht Backup läuft :confused:
 

moddok

Benutzer
Mitglied seit
22. Aug 2013
Beiträge
26
Punkte für Reaktionen
2
Punkte
3
Du bist mein Held! :eek:
Suche seit ungefähr einer Woche ununterbrochen nach einer vernünftigen Lösung (außer externe HDDs neben dem NAS)!

Jetzt wird der Pi mal wieder ausgekramt, das ganze Zeugs zuhause installiert und getestet und dann kommt das Ganze zu meinen Eltern und wird ins Internet gestellt. Natürlich entsprechend gesichert :)
 

Polarlys

Benutzer
Mitglied seit
28. Nov 2014
Beiträge
161
Punkte für Reaktionen
0
Punkte
16
Hallo moddok!
Seitdem ich das Tutorial geschrieben habe (vor einem knappen Jahr) verrichtet der Pi immer noch mit der ersten SD-Karte klaglos und fehlerfrei seinen Dienst. Funktioniert einwandfrei, prinzipiell auch über WLAN, wobei ich den Pi wegen der flotteren Übertragung mittlerweile ans LAN angeschlossen habe.
Viel Spaß beim Nachbauen!
 


 

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