Wenn man seinen Raspberry Pi durchkonfiguriert hat, möchte man ja auch mal ein Backup erstellen. Eine Möglichkeit ist es die SD-Karte zu nehmen und davon am PC ein Image zu schreiben. Es ist aber auch möglich, ein Image auf ein Netzlaufwerk abzulegen. Weiters dazu gibt es dort.
Sehr gut eignet sich dazu natürlich ein NAS-System. Ich selber besitze eine DS412+ von Synology und schreibe nun bei Bedarf meine Backups auf das NAS.
Konfiguration der Synology
Auf der Synology muss der NFS Dienst aktiviert werden:
Zusätzlich muss für einen Gemeinsamen Ordner die NFS Berechtigung gesetzt werden.
Installation der Backup-Software
Nun kann die Backupsoftware, weitere Dienste und der Backupordner installiert, bzw. erstellt werden. Wir erzeugen einen Ordner /backup in dem später das NFS-Verzeichnis der Synology gemountet wird. (Anmerkung: Den Dienst nfslock gibt es anscheinend nicht mehr, es funktioniert aber trotzdem)
curl -s -L -O https://www.linux-tips-and-tricks.de/raspiBackupInstall.sh && sudo bash raspiBackupInstall.sh
sudo mkdir /backup
sudo apt-get install nfs-common -y
sudo systemctl start rpcbind
sudo systemctl enable rpcbind
sudo systemctl start nfslock
sudo systemctl enable nfslock
Das Konfigurationsfile liegt unter /usr/local/etc/raspiBackup.conf. Hier sollte der DEFAULT_BACKUPPATH überprüft werden und DEFAULT_STOPSERVICES und DEFAULT_STARTSERVICES angepasst werden. Meine Datei dient nur als Beispiel, ihr solltet schon selber wissen welche Dienste ihr am laufen habt.
# path to store the backupfile
DEFAULT_BACKUPPATH="/backup"
# how many backups to keep
DEFAULT_KEEPBACKUPS="5"
# type of backup: dd, tar or rsync
DEFAULT_BACKUPTYPE="dd"
# zip tar or dd backup (0 = false, 1 = true)
DEFAULT_ZIP_BACKUP="0"
# commands to stop services before backup separated by &
DEFAULT_STOPSERVICES="systemctl stop grafana-server && systemctl stop telegraf && systemctl stop influxdb && systemctl stop unifi && systemctl stop homebridge"
# commands to start services after backup separated by &
DEFAULT_STARTSERVICES="systemctl start unifi && systemctl start influxdb && systemctl start telegraf && systemctl start grafana-server && systemctl start homebridge"
So sieht es bei mir aus. Die Services solltet ihr natürlich an eure Gegebenheiten anpassen.
Ein erstes Backup erstellen
sudo mount 10.10.66.100:/volume1/daten/backup/pi /backup/
sudo raspiBackup.sh -m detailed
sudo umount /backup
Damit mountet ihr euer Verzeichnis, startet ein Backup und unmountet das Verzeichnis wieder. Bei mir dauert es für die 32GB knapp eine Stunde.
Solltet ihr das Unmounten vergessen und eure NAS herunterfahren, wird euer Pi es euch mit einer erhöhten Last danken 😉
Natürlich könnt ihr auch das Backup automatisieren und einen Cronjob erstellen. Meine NAS läuft aber nicht immer, also mache ich es nach Bedarf.
sudo crontab -e
#am Ende einfügen
00 23 * * 1 /usr/local/bin/raspiBackup.sh
Hallo und danke für die Anleitung
Leider bekomme ich bei:
sudo systemctl start nfslock
sudo systemctl enable nfslock
folgendes Feedback:
Failed to start nfslock.service: Unit nfslock.service failed to load: No such file or directory.
Hast du eine Idee woran es liegen könnte bzw. wie ich das Problem behebe?
Rasbian is up to date auf einem 3er PI.
Danke
Hi,
anscheinend hat sich etwas geändert, denn auch ich habe diesen Dienst nicht mehr, das Backup funktioniert aber trotzdem.
Grüße,
Björn
Das kann ich bestätigen. Auch bei mir lief es durch. Weißt du was dieser Dienst vorher gemacht hat?
Ich werde das Backup heute versuchen zu installieren und danach einen Job einrichten um es automatisch durchführen zu lassen.
Was mich noch interessieren würde:
Könntest du für deine Leser kurz die Services beschreiben, die du beim Start des Backups beendest? Ich habe nur Homebridge drin gelassen. Die anderen sagen mir nichts. Was sollte man hier beenden wenn man ein anderes Setup hätte?
Was ist der Vorteil das Mappen den Laufwerks über NFS zu machen und nicht über einen User mit SFTP oder anderen Freigaben?
Außerdem wäre es richtig cool, wenn du noch auf die unterschiedlichen Settings von Backups eingehen könntest (dd, rsync, tar oder zippen).
Aber auch ohne diese Erweiterungen ein richtig gute Anleitung. Merci
Hi,
der Dienst ist eigentlich dafür zuständig das ein NFS Client den Zugriff auf eine Datei sperren kann, welche er gerade bearbeitet. Wenn ich es richtig verstanden habe ist es aber ein Dinst der auf dem Server laufen muss, also nicht auf dem Raspberry. Eventuell war der Dienst vorher schon nicht nötig.
Deine Services muss du selber im Blick haben, meine sollen nur ein Beispiel darstellen. Es handelt sich dabei um Grafana, Telegrtaf, InfluxDB un eine Unifi Controller, damit sammel ich Daten meiner Netzwerkkomponenten. Es sind also keine Standarddienste. Je nachdem was dein Raspi macht, solltest du die entsprechenden Dienste dort eintragen, aber das kannst halt nur du wissen.
Gute Frage, ich habe NFS als erste versucht und es hat funktioniert. Ich bin dabei geblieben.
dd hat den Vorteil das ich es mit einem Windows Rechner wiederherstellen kann. Ansonsten würde ich auf der Seite des Tools schauen.
Hallo.
Danke für die Anleitung nur habe ich ein Problem mit dem mounten der NAS.
Alles so gemacht wie oben beschrieben, aber wenn ich „sudo mount 192.168.168.16:/volume1/netbackup /backup/“ eingebe bekomme ich die Meldung:
mount.nfs: access denied by server while mounting 192.168.168.16:/volume1/NetBackup
Kann machen was ich will, ich bekomme einfach keinen Zugriff und blicke langsam auch nicht mehr durch was da falsch ist.
Vllt kannst Du mir weiterhelfen.
Gruß
Ralf
Hey, es hat sich erledigt, Fehler gefunden. Bei NFS Berechtigung auf der NAS darf nicht einfach nur die IP 192.168.168.16 stehen sondern 192.168.168.16/24 und dann funktioniert es.
Gruß
Ralf
Hallo Björn,
danke für deine Anleitung… bei mir wills nur leider noch nicht.
Ich bekomm folgenden Output:
pi@phoniebox:~ $ sudo raspiBackup.sh -m detailed
— RBK0009I: phoniebox: raspiBackup.sh V0.6.4.3 (2d927a2) Wed Jul 10 21:15:01 BST 2019 gestartet.
— RBK0128I: Logdatei ist /backup/phoniebox/phoniebox-dd-backup-20190710-211500/raspiBackup.log.
— RBK0116I: Konfigurationsdatei /usr/local/etc/raspiBackup.conf wird benutzt.
??? RBK0019E: Option -a und -o nicht angegeben.
— RBK0032I: Bitte warten bis aufgeräumt wurde.
— RBK0043I: Unvollständiges Backup /backup/phoniebox/phoniebox-dd-backup-20190710-211500 in wird gelöscht. Das wird etwas dauern. Bitte Geduld.
— RBK0049I: Meldungen wurden in /home/pi/raspiBackup.msg gesichert.
— RBK0026I: Debug Logdatei wurde in /home/pi/raspiBackup.log gesichert.
??? RBK0005E: Backup fehlerhaft beendet. Siehe vorhergehende Fehlermeldungen.
— RBK0010I: phoniebox: raspiBackup.sh V0.6.4.3 (2d927a2) Wed Jul 10 21:15:10 BST 2019 beendet.
Hast du da eine Idee worans liegen könnte?
Hallo Georg,
eigentlich ganz einfach. Der Entwickler schreibt selbst dazu folgendes:
Hier der Loink zur FAQ
Du musst also in deiner Config (/usr/local/etc/raspiBackup.conf) folgende Zeilen befüllen:
# commands to stop services before backup separated by &&
DEFAULT_STOPSERVICES=“systemctl stop unifi“
# commands to start services after backup separated by &&
DEFAULT_STARTSERVICES=“systemctl start unifi“
Der Dienst unifi ist hier nur ein Beispiel, es kommt halt darauf an , was dein Pi macht.
Grüße,
Björn
Danke für die Erklärung! Leider funktioniert die Steuerung über die crontab Funktion nicht. Meine Vermutung ist, dass ich das mount and umount noch irgendwo unterbringen muss und es mit dem Einfügen unter crontab nicht erledigt ist.
Jemand Erfahrung dazu?
Bevor das Backup über den crontab ausgeführt werden kann, muss natürlich mittels mount das Laufwerk eingebunden werden.
Mit dem File /etc/fstab kann das Laufwerk beim Boot gemountet werden.
Mit folgender zusätzlichen Zeile wird z.B. das NFS-Verzeichnis auf meiner Nas in der Ordner Backup gemountet:
10.10.66.100:/volume1/data/backup/ /backup/ nfs defaults 0 0
Gibt es auch eine Möglichkeit den NAS erst zum Backup zu mounten und nach Abschluss des Backups zu unmounten? Mein NAS startet jede Nacht neu, mein Pi nicht.
Dazu müsstest du ein Script schreiben welches erst mountet,dann das Backup startet und anschließend wieder unmountet.
Das Script würdest du dann über den crontab starten lassen.
Hallo zusammen, bei mir wird folgende Fehlermeldung ausgegeben -> Option -a und -o nicht angegeben. Was mache ich da? (siehe unten)
pi@starryray:~ $ sudo raspiBackup.sh -m detailed
— RBK0009I: starryray: raspiBackup.sh V0.6.4.3 (2d927a2) Fr 7. Feb 18:42:56 CET 2020 gestartet.
— RBK0128I: Logdatei ist /backup/starryray/starryray-ddz-backup-20200207-184256/raspiBackup.log.
— RBK0116I: Konfigurationsdatei /usr/local/etc/raspiBackup.conf wird benutzt.
??? RBK0019E: Option -a und -o nicht angegeben.
— RBK0032I: Bitte warten bis aufgeräumt wurde.
— RBK0043I: Unvollständiges Backup /backup/starryray/starryray-ddz-backup-20200207-184256 in wird gelöscht. Das wird etwas dauern. Bitte Geduld.
— RBK0049I: Meldungen wurden in /home/pi/raspiBackup.msg gesichert.
— RBK0026I: Debug Logdatei wurde in /home/pi/raspiBackup.log gesichert.
??? RBK0005E: Backup fehlerhaft beendet. Siehe vorhergehende Fehlermeldungen.
— RBK0010I: starryray: raspiBackup.sh V0.6.4.3 (2d927a2) Fr 7. Feb 18:43:11 CET 2020 beendet.
Hier der Link zur FAQ
Du musst also in deiner Config (/usr/local/etc/raspiBackup.conf) folgende Zeilen befüllen:
# commands to stop services before backup separated by &&
DEFAULT_STOPSERVICES=“systemctl stop unifi“
# commands to start services after backup separated by &&
DEFAULT_STARTSERVICES=“systemctl start unifi“
Der Dienst unifi ist hier nur ein Beispiel, es kommt halt darauf an , was dein Pi macht.
Grüße,
Björn
Du musst einen stop und Start Dienst angeben. Was läuft auf deinem pi was du vor dem Backup stoppen kannst und danach wieder starten musst.
-a -o sagt aus das du keine Bedingung für stop Start angegeben hast. Wenn die vorhanden sind klappt auch das Backup
Zu Deiner Beschreibung
„Ein Restore ist einfach gemacht. Ihr schaltet den Pi aus und entnehmt seine SD-Karte. Anschließend schreibt ihr das Image wieder auf die Karte. “
moechte ich anmerken dass das mit Vorsicht zu geniessen ist. Wenn die SD Karte defekt ist macht es aber keinen Sinn den Backup auf diese Karte zu restoren. Wer auf Nummer sicher gehen will restored immer auf eine neuen SD Karte.
Hallo, danke sehr für den Beitrag. Bei mir läuft schon das erste Backup zur Zeit.
Eine Frage zum Beenden der Dienste vor dem Backup. Müssen hier ALLE Dienste angeführt werden oder nur die „Wichtigsten“?
derzeit habe ich Influxdb, Homegear, Openhab2, Mosquitto, Grafana, Nodered, Zigbee2mqtt
Danke
eventuell habe ich mich zu undeutlich ausgedrückt. Ich habe die angeführten Dienste im Skript inkludiert. Es laufen aber noch viele weitere kleine Dienste.
Super Beschreibung! Echt Spitze
Bei mir funktioniert alles perfekt.
Ich habe einen raspberry Pi der mein komplettes Aquarium steuert diesen wollte ich komplett sichern weil mir schon einmal die Micro SD karte kaputt gegangen ist. Daraufhin musste ich sehr kompliziert den iobroker aus einer backup datei wiederherstellen. mit dem image ist es eine perfekte Lösung. nur könnte man noch eine telegram Meldung ausgeben die informiert das dass Backup erfolgreich installiert wurde mit der gespeicherten image größe und das die start optionen ausgegeben werde also zB iobroker wurde neu gestartet.
Das wäre noch das I tüpfelchen