Skip to main content

SD-Card Backup vom Raspberry im Livebetrieb

Das Worst Case Szenario – eine defekte SD-Card…

SD-Card Backup Raspberry: Was wäre schlimmer, ein in mühevoller Zeitarbeit erstelltes Linuxsytem auf dem Raspberry Pi durch einen Defekt der SD Card zu verlieren. Daher sollte man in gewissen Zeitabständen die komplette Speicherkarte sichern. Der normale Vorgang (so macht man das auch in der Regel), wäre das System herunterzufahren, Stromkabel ziehen um die SD-Card zu entnehmen. Anschließend mit dem USB Image Tool oder Win32DiskImager die SD-Card sichern. Auf Dauer immer etwas lästig, da ja schnell mal weiteres am Raspberry-System eingerichtet oder installiert wird.

Welche Möglichkeiten gibt es für ein SD-Card Backup?

So kann man z.B. mit einem Backup-Script im „Livebetrieb“ mit dd die komplette SD-Card sichern. Voraussetzung hierfür ist im Idealfall das Booten von der SD-Card. Beim Raspberry Pi1, Pi2 oder Pi3 z.B. gibt es ja noch andere Bootmethoden.

Welches Linux-Script nutzt man für ein Backup im Livebetrieb?

Um das Ganze nun zu realisieren, nutze man im Beispiel das Bash-Script raspiBackup von hier:

https://www.linux-tips-and-tricks.de/de/raspibackup/

Vielen Dank in diesem Zusammenhang an framp für das Script und die ausführlichen Anleitungen.

Voraussetzung für das DD-Backup ist, dass das Raspian System komplett von der SD-Card bootet. Um per Console (SSH) Zugriff zum Raspberry Pi zu haben, nutzt man in der Regel Putty. Es reicht dafür der Benutzer pi, Root-Zugriff ist für das Backup nicht notwendig.

1. Vorbereitung:
Im Beispiel soll das DD-Backup auf ein gemountetes NAS (Netzwerkspeicher) gesichert werden. Natürlich kann auch ein angeschlossener USB-Stick verwendet werden. Dieser USB-Stick sollte natürlich auch vorher ordnungsgemäß gemountet (eingehangen) sein.
2. Freigabe auf dem NAS (Netzwerkspeicher) einrichten: (IP ist nur ein Beispiel)
Ist alles fehlerfrei erledigt, geht es mit dem nächsten Schritt weiter. Prüfen kann man das von der Console aus auf dem Raspberry Pi mit:
showmount -e 192.168.178.24
IP-Adresse vom NAS (192.168.178.24) – dort sollte z.B. gelistet werden:
root@Raspberry-Server:~# showmount -e 192.168.178.24
Export list for 192.168.178.24:
/mnt/HD/HD_a2/NI/raspiserver-backup *
root@Raspberry-Server:~#

Lese die Installationsabschnitte von links nach rechts 😉

3. Mountpoint auf dem Raspberry Pi erstellen:
sudo mkdir -p /backups

4. Für den Mountpoint Schreibrechte setzen:
sudo chmod 0777 /backups

Für den Test zur Anleitung wurden volle Schreibrechte mit 0777 gesetzt, 0755 sollte allerdings auch reichen.

5. Mountfreigaben definieren mit fstab:
sudo nano /etc/fstab

6. fstab mit u.a. Mount-Eintrag ergänzen und speichern:
Tastenkombination STRG+O speichern / STRG+X verlassen 😉

7. Mountbefehl in fstab einfügen:
192.168.178.24:/mnt/HD/HD_a2/NI/raspiserver-backup /backups nfs rw,auto,hard,relatime 0 0

kurze Erklärung zum Mounteintrag in der fstab:
192.168.178.24:/mnt/HD/HD_a2/NI/raspiserver-backup (Netzwerkfreigabe NAS, IP 192.168.178.24)
/backups nfs rw,auto,hard,relatime 0 0 (Mountpoint Raspberry Pi, rw=lesen/schreiben)

Die Mountfreigabe ist nun abgeschlossen. Um das anschließend sicher zu testen, den Netzwerk-Server (NAS) und den Clienten (Raspberry Pi) rebooten. Bei dem NAS reicht eigentlich auch den NFS-Server neu zu starten. Dies erledigt man in der Regel im WebIF vom Netzwerkspeicher.

SD-Card Backup Raspberry – schnelle Sicherungsmethode mit dd

Mount prüfen mit: df -h

Dort sollte nun z.B. folgendes stehen:
192.168.178.24:/mnt/HD/HD_a2/NI/raspiserver-backup /backups nfs rw,auto,hard,relatime 0 0

Zusätzlich kann man noch auf der Console mit mount -l kontrollieren:

192.168.178.24:/mnt/HD/HD_a2/NI/raspiserver-backup on /backups type nfs (rw, relatime, vers=3, rsize=16384, wsize=16384,namlen=255, hard, proto=tcp, timeo=600, retrans=2, sec=sys, mountaddr=192.168.178.24, mountvers=3, mountport=35220, mountproto=udp,local_lock=none, addr=192.168.178.24)

Wird das so gelistet, ist alles in Ordnung 😉 Kopiert eine beliebige Textdatei in den Freigabeordner auf dem NAS, so müsst ihr auf dem Raspberry Pi im Verzeichnis /backups diese Datei wiederfinden. Umgekehrt ebenso. Löscht ihr diese in /backups, verschwindet die Datei auf dem NAS.

Weiter geht es mit dem Backup… (SD-Card Backup Raspberry)

8. Backupscript raspiBackup installieren mit:
curl -s -L -O https://www.linux-tips-and-tricks.de/raspiBackupInstall.sh && sudo bash raspiBackupInstall.sh -c -l DE

Update 2022

8. Backupscript raspiBackup installieren mit:
curl -L https://raspibackup.linux-tips-and-tricks.de/install | sudo bash

Das Script raspiBackup.sh wird nach usr/local/bin installiert, zusätzlich eine raspiBackup.conf nach usr/local/etc. Diese Datei muss noch entsprechend angepasst werden. Eine bereits von mir eingerichtete .conf ist hier schon beigefügt und kann verwendet werden. Diese Conf-Datei dann nach individueller Anpassung nach usr/local/etc kopieren. Die Datei ist mit entsprechenden Kommentaren vermerkt. Download: raspiBackup-Script

Modell Preis
1 Netzwerkspeicher Synology DS218j Synology DS218j – 20TB (2x 10TB WD RED) 2 Bay – NAS

979,00 €

inkl. 19% gesetzlicher MwSt.
Details Ansehen*

9. Aufruf (Backup starten) ohne Crontab:
sudo /usr/local/bin/raspiBackup.sh -a ":" -o ":" /backups

10. Zusätzliche Einstellungen und raspiBackup.conf anpassen:
Download: raspiBackup.conf

Hinweis: Laufen keine Service-Dienste die vor Backupstart gestoppt werden müssen, kann man mit diesen beiden Optionen das Backup anstossen.

Werte in der raspiBackup.conf anpassen:

# Pfad wo das Backupfile gespeichert wird (hier ist der Mountpoint vom Raspi gemeint)
DEFAULT_BACKUPPATH=“/backups“

# Anzahl der zu vorhaltenden Backups
DEFAULT_KEEPBACKUPS=“3″

# Typ des Backups: dd, tar, xbmc or rsync
DEFAULT_BACKUPTYPE=“dd“

# zip tar oder dd backup (0 = nein, 1 = ja)
DEFAULT_ZIP_BACKUP=“0″

# Durch & getrennte Befehle, die vor dem Starten des Backups auszuführen sind
DEFAULT_STOPSERVICES=““

# Durch & getrennte Befehle, die nach dem Starten des Backups auszuführen sind
DEFAULT_STARTSERVICES=““

# emailadresse die das Backupergebnis erhält
DEFAULT_EMAIL=“deine@domain.de“

# Weitere Parameter für das eMail programm (Optional -E)
DEFAULT_EMAIL_PARMS=“-f absender@smart-mail.de -s smtp.smart-mail.de:587 -o tls=no -xu smtpusername -xp passwort -m Von der SD Card (Raspberry) wurde im Livebetrieb erfolgreich ein Image erstellt.“

# Log level (0 = keiner, 1 = debug)
DEFAULT_LOG_LEVEL=0

# log Ausgabe ( 0 = /var/log/syslog, 1 = /var/log/raspiBackup/.log, 2 = /raspiBackup.log, 3 = ./raspiBackup.log )
DEFAULT_LOG_OUTPUT=2

# Message level (0 = minimal, 1 = detailed)
DEFAULT_MSG_LEVEL=“1″

# mailprogram
DEFAULT_MAIL_PROGRAM=“sendEmail“

Nutze zum Test das Emailscript: sendEmail. Trage dort deine Werte ein. Zusätzlich müssen weitere Parameter unter „DEFAULT_EMAIL_PARMS=““ “ ergänzt werden. Einen Email-Provider ohne TLS Verschlüsselung ist am besten, hier im Beispiel smart-mail (Konsolenhilfe -> sendEmail –help).

Backup Scriptvorgang automatisieren mit raspiBackupWrapper

Mit den zusätzlichen Script wird die Befehlskette in der Console zum Starten des Backups verkürzt. Entsprechend wird der Cronjob auch dann darüber gestartet. Einfach das Script hier laden und nach usr/local/bin kopieren (Rechte auf 0755 setzen).

Eventuelle Anpassungen der Service-Dienste durchführen (siehe Hinweis in der Datei). Download: raspiBackupWrapper
Zwischen Zeile 82 und 97 könnt ihr eure laufenden Dienste über das Script automatisch stoppen und nach dem Backupvorgang wieder starten. Bei mir laufen apache2, mysql und samba nicht, daher habe ich das auskommentiert. Passt die Datei einfach euren Wünschen an. 😉

11. Cronjob einrichten:
sudo crontab -e

12. Cronjob für z.B. jeden Sonntag 03:00 Uhr
00 03 * * 0 /usr/local/bin/raspiBackupWrapper.sh > /dev/null 2>&1

13. Testlauf ohne Erstellung eines Backups:
raspiBackup.sh -a ":" -o ":" -F

14. Nach Testlauf finden wir folgende Meldung in Console:
Consolen-Ausgabe siehe unten

root@Raspberry-Server:~# raspiBackup.sh -a „:“ -o „:“ -F
— RBK0009I: Raspberry-Server: raspiBackup.sh V0.6.1.3b um Sa 11. Mär 10:56:55 CET 2017 gestartet
— RBK0128I: Logdatei ist /backups/Raspberry-Server/Raspberry-Server-dd-backup-20170311-105655/Raspberry-Server-backup.log
— RBK0116I: Konfigurationsdatei /usr/local/etc/raspiBackup.conf wird benutzt
!!! RBK0124W: Simulationsmodus an
— RBK0008I: Services werden gestoppt: ‚:‘
— RBK0081I: Backup vom Typ dd wird in /backups/Raspberry-Server/Raspberry-Server-dd-backup-20170311-105655 erstellt
— RBK0085I: Backuperstellung vom Typ dd läuft. Bitte etwas Geduld
— RBK0007I: Services werden gestartet: ‚:‘
— RBK0010I: Raspberry-Server: raspiBackup.sh V0.6.1.3b um Sa 11. Mär 10:56:58 CET 2017 beendet
— RBK0017I: Backup erfolgreich beendet
Mar 11 10:57:00 raspberry-server sendEmail[10320]: Email was sent successfully!
root@Raspberry-Server:~#

15. SD-Card im Livebetrieb sichern mit Funktion dd
Durch den gesetzten Cronjob wird nun jeden Sonntag gegen 03:00 Uhr ein Backup erstellt und auf den Netzwerkspeicher gespeichert. Nach Erstellung erhälst du eine Email über das Ergebnis. Solltest du nun manuell ein Backup erstellen wollen, so über die Console ausführen mit:
raspiBackupWrapper.sh

Der Backupvorgang dauert in etwa 10-15 Minuten. Ob das SD-Card Backup fehlerfrei ist, könnt ihr einfach testen. Das gesicherte Image auf eine andere SD-Card schreiben (Win32Diskmanager) und in den Raspberry Pi einlegen. Bei meinen eigenen Tests hat dies nun mehrmals reibungslos funktioniert. Es kommt immer darauf an, wieviele Service-Dienste laufen. Diese sollten eben wie oben beschrieben vorher gestoppt werden. 🙂

SD-Card Backup Raspberry mit Sicherheit für deine Speicherkarte

16. Meldung im Backup Log und/oder Console nach Beendigung des Backupvorgangs sollte so aussehen:

20170311-083303: MSG — RBK0009I: Raspberry-Server: raspiBackup.sh V0.6.1.3b um Sa 11. Mär 08:33:03 CET 2017 gestartet
20170311-083303: MSG — RBK0128I: Logdatei ist /backups/Raspberry-Server/Raspberry-Server-dd-backup-20170311-083302/Raspberry-Server-backup.log
20170311-083303: MSG — RBK0116I: Konfigurationsdatei /usr/local/etc/raspiBackup.conf wird benutzt
20170311-083303: MSG — RBK0008I: Services werden gestoppt: ‚:‘
20170311-083303: MSG — RBK0081I: Backup vom Typ dd wird in /backups/Raspberry-Server/Raspberry-Server-dd-backup-20170311-083302 erstellt
20170311-083304: MSG — RBK0085I: Backuperstellung vom Typ dd läuft. Bitte etwas Geduld
7969+1 Datensätze ein
7969+1 Datensätze aus
7969177600 Bytes (8,0 GB) kopiert, 940,538 s, 8,5 MB/s
20170311-084847: MSG — RBK0007I: Services werden gestartet: ‚:‘
20170311-084848: MSG — RBK0010I: Raspberry-Server: raspiBackup.sh V0.6.1.3b um Sa 11. Mär 08:48:48 CET 2017 beendet
20170311-084848: MSG — RBK0017I: Backup erfolgreich beendet
Mar 11 08:48:50 raspberry-server sendEmail[19149]: Email was sent successfully!

17. Erstelltes Backup (Image) über Windows wiederherstellen
SD-Card Backup Raspberry erstellt und dann nutzbar dafür ist Win32DiskImager. Damit schreibt man das erstellte Image einfach wieder auf eine zweite oder andere SD-Card. Vollständige Anleitung zum raspiBackup-Script gibt es übrigens auch hier. Hoffe, alles klappt beim Backup mit DD im Livebetrieb. 🙂

Hier kannst du den Beitrag bewerten

1 Block2 Blöcke3 Blöcke4 Blöcke5 Blöcke ( 1 Bewertungen, Durchschnitt: 5,00 von insgesamt 5 )
Loading...

Hits von SD-Card Backup vom Raspberry im Livebetrieb

Diese Seite wurde bisher 1.669 mal gelesen