Die simpelste Möglichkeit, ein Komplettbackup von deiner MicroSD Karte durchzuführen, möchte ich dir hier Schritt für Schritt demonstrieren.
Dies lässt sich auf einem Linuxrechner mit Bordmitteln in der Shell nachvollziehen. Unter Windows ist dies vermutlich über Cygwin auch realisieren .
Dieses Backupverfahren ist nicht im laufenden Betrieb möglich, daher benötigst du einen zweiten Rechner (das kann auch ein Raspi mit einem USB MicroSD Leser sein)
Vorbereitung
Fahre deinen Raspberry Pi runter, entnehme die MicroSD Karte und stecke sie in das Lesegerät.
Jetzt musst du den Gerätenamen für das Lesegerät ermitteln. Bei mir ist das „/dev/sdd“.
Image schreiben
Um die Karte komplett bitweise zu lesen und in ein Image zu schreiben, nutzen wir das Programm dd, dass blockweise Daten von der Karte liest und dann sofort an ein zweites dd Kommando piped, um sie zu schreiben.
sudo dd /dev/sdd bs=8M|dd of=./backup.img bs=8M
Das erste dd muss mit Root-Rechten gestartet werden, um auf das Device zugreifen zu können. Es liest dann Blöcke in 8MB Größe (bs=) vom Device und gibt diese an das zweite dd weiter, dass diese Blöcke in die Datei ./backup.img schreibt.
Das dauert eine Weile, je nach Kapazität der MicroSD Karte. Da in der Zeit keine Ausgabe erfolgt, setze ich üblicherweise noch das ProcessViewer Kommando dazwischen.
sudo dd /dev/sdd bs=8M|pv|dd of=./test.img bs=8M
Wenn die Prozesskette durch ist, hast du deine gesamte Speicherkarte in eine Datei gesichert.
-rw-rw-rw- 1 pi pi 31914983424 Dec 11 10:23 test.img
Diese Datei ist genauso groß wie deine MicroSD Karte (hier 32GB).
Integrität des Backups
Regel Nr. 4 besagt, dass du die Integrität des Backups überprüfen musst. Dazu berechnen wir jetzt die Hashwerte der MicroSD Karte und der Backupdatei.
sudo sha256sum /dev/sdd
sha256sum ./test.img
sha256sum berechnet mittels des Secure Hash Algorithmus einen eindeutigen Hashwert. Sollte auch nur ein Bit zwischen Datei und MicroSD Karte unterschiedlich sein, kommen bei den beiden Kommandos unterschiedliche Werte raus. Dann hat das Backup nicht geklappt.
Die Berechnung der Hashwerte dauert eine ganze Weile, da sowohl die MicroSD Karte als auch das Komplettbackup komplett gelesen werden müssen.
Komplettbackup komprimieren
Wenn du dich an Regel Nr. 7 hältst, belegt ein Komplettbackup den dreifachen Speicher auf deinem Sicherungsmedium. Für sowas gibt es zum Glück Kompressionsverfahren, die den Platzbedarf minimieren.
bzip2 ist ein freies Kompressionsprogramm mit einer guten Kompressionsrate.
In der Standardvariante ist es bei Raspberry Pi OS sofort mitinstalliert. Im Zeitalter von Multicore CPUs ist die parallele Variante allerdings interessanter, da sie durch die Auslastung aller Prozessorkerne schneller ist.
sudo apt install pbzip2
Jetzt komprimieren wir unsere Backupdatei
pzib2 ./test.img
Gerade für diesen Schritt ist ein schneller Rechner mit deutlich mehr Kernen als der Raspberry Pi zu empfehlen, da das sehr lange dauern kann.
Die Kompressionsrate hängt stark davon ab, wie viele Daten auf der MicroSD Karte gespeichert sind.
Backup zurückspielen
Falls der gefürchtete Fall eintritt, den wir uns alle nicht wünschen, kannst du das Image einfach mit
bunzip2 test.img.bz2
dekomprimieren und mittels
dd if=test.img bs=8M |pv|dd of=/dev/sdd bs=8M
auf eine neue Speicherkarte schreiben und dein Raspberry Pi ist wieder am Start.
Die hier vorgestellte Methode fürs Komplettbackup ist sehr langwierig, führt aber immer zum Erfolg. Gerade vor kritischen Updates wie ein Releasewechsel von Raspian solltest du dies durchführen, dann kann die nicht viel passieren.