Wer sich bereits schon einmal mit dem Raspberry Pi auseinander gesetzt hat, weiß das der Speicher eine Schwachstelle des Raspberry Pi’s ist.
Denn SD-Karten haben nur eine begrenzte Lebensdauer, welche vor allem davon abgehängt, wie oft Daten auf von der Karte gelesen bzw. auf der Karte geschrieben werden.
Durch einer Fehlerhafte SD-Karte kommt es schnell zu Fehlern im Dateisystem, oder man verliert im schlimmsten Fall sogar alle darauf enthaltenen Daten!
Daher möchte ich hier zwei Methoden festhalten wie man den Raspberry Pi quasi „offline“ & „online“ sichert!
Möglichkeit 1 – Die „Offline“ Sicherung:
Wer aufwändige Konfigurationen und Software Installationen auf seinem Raspberry Pi durchgeführt hat. möchte sicherlich gerne eine komplette Sicherung seines Pi’s anlegen, welche alle Einstellungen & auch das komplette System enthält!
Dabei erstellt man eine komplette Image (*.img) Datei auf seinem Windows Rechner.
Das hat den Vorteil das man sein fertig eingerichtetes System immer wieder verwenden kann, ohne jedes mal von vorne Beginnen zu müssen.
Die Vorgehensweise zur Erstellung einer solchen Sicherung, ist ähnlich wie das aufspielen des Betriebssystems „Raspbian“, das ebenfalls als IMG-Datei vorliegt!
Einen entscheidenden Nachteil hat diese Sicherungsmethode aber, denn die erstellen IMG-Dateien werden sehr groß (genau so groß wie die jeweils verwendete SD-Karte), und brauchen auch recht lange zum erstellen!
Important!
Bei einer Sicherung via Image muss die SD-Karte auf der das Image später wiederhergestellt werden soll, mindestens so groß sein wie die ursprüngliche SD-Karte,Denn auch wenn nicht der komplette Speicher auf der SD-Karte benutzt wurde, hat die IMG-Datei immer die komplette Größe und lässt sich nicht bzw. nur schwer verkleinern! 😉
Und so erfolgt die Sicherung mit dem „Win32 Disk Imager“:
- Man lädt sich die Software „Win32 Disk Imager“ herunter, und installiert diese!
- Anschließend fährt man seinen Raspberry Pi sauber herunter & entfernt den Netzstecker
sudo shutdown -h now
- Als nächstes entnimmt man die SD-Karte aus dem Raspberry Pi, und gibt diese in einen Kartenleser seines Computers.
- Danach öffnet man die vorhin installierte Software „Win32 Disk Imager„, und wählt dort bei Speicherort einen beliebigen Speicherort für die zu erstellende IMG-Datei aus.
- Gleich daneben unter „Device“ wählt man nun das Laufwerk unter welchem Windows die SD-Karte anspricht aus.
- Zum Schluss klickt man auf „Read“, und das Tool, erstellt nun eine komplette Sicherung der SD-Karte, in Form einer IMG-Datei. 😉
Notice
➡ Die Wiederherstellung einer solchen komplett Sicherung, via IMG-Datei, erfolgt analog dazu, jedoch muss zum Schluss nicht „Read“ sondern „Write“ ausgewählt werden!
Möglichkeit 2 – Die „Online“ Sicherung:
Der Raspberry Pi, ist aber auch in der Lage sich selbständig als komplettes Image zu sichern.
Dafür wird aber ein externe Sicherungsort, wie z.B. eine NAS oder eine angeschlossene USB-Festplatte benötigt!
Hierbei erfolgt die Sicherung mit dem Linux Kommando „dd„, das auch via Cronjob regelmäßig ausgeführt wird, bzw. werden kann. 😉
Der Vorteil bei dieser Methode ist, das die Sicherung voll automatisch läuft, und das der Raspberry Pi auch nicht heruntergefahren werden muss.
Außerdem bietet diese Sicherungsart auch die Möglichkeit, mehrere Versionen einer Sicherung auf zu bewahren. 😎
Aber diese Methode, hat natürlich Nachteile, den die Image-Dateien werden auch hier wieder sehr groß, und es wird zwingend ein externer Speicherort für das Backup benötigt!
(z.B.: eine NAS oder eine angeschlossene USB-Festplatte!)
Außerdem sollten während die Sicherung läuft, alle Anwendung & Dienste vorher gestoppt werden!
Und so richtet man die „Online“-Sicherung ein:
Falls noch nicht geschehen, muss man zuerst die angeschlossene USB-Festplatte oder die zu verwendende NAS bzw. deren Freigabe „mounten“.
Da es hierfür aber je nachdem ob man eine USB-Festplatte oder eine NAS-Freigabe verwendet verschiedene Möglichkeiten gibt, möchte ich hier an dieser Stelle nicht näher darauf eingehen, und gehe einmal davon aus, das man diesen Schritt bereits erledigt hat!
Wer dies noch nicht getan hat, der findet im Internet zahlreiche sehr gute & ausführliche Anleitungen wie man dies bewerkstelligt!
Evtl. werde ich zu einem späteren Zeitpunkt, noch einen eigenen Beitrag zu diesem sehr umfangreichen Thema schreiben!
Backup-Skript auf dem Raspberry Pi einrichten:
- Man erstellt sich ein Backup-Skript im „Home“ Verzeichnis des Benutzers „pi“
sudo nano /home/pi/Backup.sh
- Anschließend fügt man dort das Backup-Skript ein:
#!/bin/bash
# VARIABLEN - HIER EDITIEREN
BACKUP_PFAD="/pfad/zum_backup_order"
BACKUP_ANZAHL="5"
BACKUP_NAME="RaspberryPiBackup"
DIENSTE_START_STOP="service mysql"
# ENDE VARIABLEN
# Stoppe Dienste vor Backup
${DIENSTE_START_STOP} stop
# Backup mit Hilfe von dd erstellen und im angegebenen Pfad speichern
dd if=/dev/mmcblk0 of=${BACKUP_PFAD}/${BACKUP_NAME}-$(date +%Y%m%d-%H%M%S).img bs=1MB
# Starte Dienste nach Backup
${START_SERVICES} start
# Alte Sicherungen die nach X neuen Sicherungen entfernen
pushd ${BACKUP_PFAD}; ls -tr ${BACKUP_PFAD}/${BACKUP_NAME}* | head -n -${BACKUP_ANZAHL} | xargs rm; popd
Und hier das Skript kurz erklärt:
- „BACKUP_PFAD“ – Gibt den Pfad zur gemounteten USB-Festplatte bzw. zum Share auf der NAS an
- „BACKUP_ANZAHL“ – Hier kann man die Anzahl der Versionen bestimmen. Also wie lange ältere Sicherung aufbewahrt werden sollen!
- „BACKUP_NAME“ – Gibt den Namen des Backup an
- „DIENST_START_STOP“ – Dienste die vor dem Backup gestoppt & anschließend wieder gestartet werden sollen
- Anschließend speichert man das Skript noch mit „STRG + X„
- Im nächsten Schritt muss das soeben erstelle Backup-Skript auch noch ausführbar gemacht werden, und man verschiebt es am besten auch gleich nach „/usr/local/bin“
Dies geschieht mit:
sudo chmod 755 /home/pi/Backup.sh
sudo mv /home/pi/Backup.sh /usr/local/bin/Backup.sh
- Damit die Sicherung auch regelmäßig ausgeführt wird erstellt man mithilfe von „crontab“ einen „CronJob„:
sudo crontab -e
- In einer neuen Zeile gibt man den Job sowie den Pfad zum Backup-Skript an:
00 01 * * 0 /usr/local/bin/Backup.sh
Hat man dies in einer neuen Zeile eingetragen, Speichern wir wieder ab mit „STRG + X“ und verlassen den Editor!Notice
Durch diesen Eintrag wird täglich um 01:00 Uhr eine Sicherung gestartet!Um eine so erstellte Sicherung wiederherzustellen, verwendet man wieder das Tool „Win32 Disk Imager„, so wie es bei Möglichkeit 1 beschrieben wurde!
Alternativ dazu, kann man eine solch erstelle Sicherung auch auf einem Linux System wiederherstellen, mittels:
dd if=/pfad_zum_backup/backup.img of=/dev/sda bs=1MB
➡ Wobei man hierbei aufpassen muss, das „sda“ auch wirklich die SD-Karte ist!
4 Kommentare
Zum Kommentar-Formular springen
Danke, kann man das Script auch manuell starten um zu testen ob es funktioniert?
Super erklärt:)
Hallo, vielen dank fur die gute Beschreibung. Eine Frage hätte ich dazu noch: Wie müssen mehre Dienste eingetragen werden um automatisch gestoppt und wieder gestartet zu werden?
Autor
Hallo Mario!
Ich kann dir das leider nicht zu 100% beantworten, da ich in der Linux Welt selbst noch ziemlich neu bin und ich ehrlich gesagt dies bis dato auch noch nicht so oft gebraucht habe.
Aber ich schlage so etwas gerne immer im Ubuntuusers Wiki nach.
Vllt hilft dir das hier ja weiter 😉
https://wiki.ubuntuusers.de/Cron/
LG
Daniel