Du könntest die komplette SD Card über das Netzwerk in ein Image kopieren. Ich hab das mit einem Mac und einem Raspi getestet und vom Raspi aus ein Backup zum Mac gesendet. Danach habe ich das Backup auf eine andere SD Card geschrieben und davon gebootet.
Aufbau:
Rechner, der gesichert werden soll: Raspi
Rechner auf den gesichert werden soll: Mac. Falls du keinen Mac hast, kannst du das Folgende ganz leicht an eine Linux-Maschine anpassen. Wie es mit Windows funktioniert: keine Ahnung. Ich helfe gern bei etwaigen Fehlermeldungen, die du erhalten könntest.
Verwendete Programme auf beiden Rechnern: dd, nc, bzip2
Schritte auf dem Mac:
1) Auf dem Mac eine Shell öffnen (Terminal)
2) Eingeben: nc -l 22000 | bzip2 -d | dd bs=16M of=/Users/sschuste/Images/Raspberry\ Pi/raspi.bak.img
(ennzeh minus ell zweiundzwanzigtausend Pipe bzipzwei minus deh Pipe dede beh ess …… Achtung: das ist ein kleines L vor 22000 und ein gerader Strich vor und hinter dem bzip2. Man sagt Pipe zu dem Strich. Naja, eigentlich sagt man nix zu dem Strich, außer vielleicht "wo auf der verdammten Tatstatur bist du?", man sagt halt Pipe, wenn man über ihn spricht. Falls du das bereits wusstest, dann betrachte diese Erklärung bitte als gegenstandslos, aber es wird doch hoffentlich irgendwen geben, der das noch nicht wusste.)
und das bedeutet:
nc -l 22000 : starte netcat als Service, der auf Port 22000 lauschen soll. Der Port ist dir überlassen und sollte zwischen 1025 und 65535 liegen
| bzip2 -d : alles was bei netcat reinsegelt, nach bzip2 schicken und dekomprimieren. Spoiler: da segelt später dein Backup rein.
| dd bs=16M of= : alles was bzip2 ausspuckt, nach dd schicken und in eine Datei schreiben (of heißt output file)
/Users/sschuste/Images/Raspi/raspi.bak.img : Die Datei raspi.bak.img nimmt das Backup auf. Der Pfad dahin muss von dir angepasst werden. Der Dateiname muss nicht raspi.bak.img lauten.
Dann die Returntaste drücken und sich freuen, wenn jetzt keine weitere Meldung erscheint.
Schritte auf dem Raspi:
1) Auf dem Raspi einloggen als dein Lieblingsuser (pi, dirk, homebridge, you name it)
2) Eingeben: sudo dd bs=16M if=/dev/mmcblk0 | bzip2 -c | nc 192.168.1.203 22000
(Auch hier ist das eine Pipe und kein kleines L vor und hinter dem bzip2!)
und das bedeutet:
sudo: führe den folgenden Befehl mit root-Berechtigung aus
dd bs=16M if=/dev/mmcblk0 : mache einen disk dump in 16 Megabyte großen Blöcken und benutze als disk das Device /dev/mmcblk0 (if heißt input file. Unbedingt siebenmal nachprüfen, dass da wirklich if steht und nicht etwa of). Der Parameter bs=lädt ein, andere Blockgrößen zu versuchen und damit das Backup zu beschleunigen. Ich glaub ja nicht so dran.
| bzip2 -c : sende den Output von dd an bzip2 zum Komprimieren
| nc 192.168.1.203 22000 : sende den Output von bzip2 via netcat an die IP-Adresse 192.168.1.203 (das ist der Mac) auf Port 22000. Natürlich änderst du hier zumindest die IP-Adresse und setzt die deines Zielrechners ein.
Returntaste drücken und sich freuen, wenn jetzt keine weitere Meldung erscheint.
Dann passiert erstmal eine ganze Weile scheinbar gar nichts. In deinen Terminals blinken möglicherweise enervierend die Cursor in der Hoffnung, man möge sie beachten. Das ist zwar sehr langweilig, aber es gibt auch keinen Grund, sich das anzusehen. Sorry Cursors.
Du darfst jetzt auf keinen Fall die Terminalfenster schließen!
Bei mir hat dieser katatonische Zustand gute 80 Minuten gedauert. In dieser Zeit schickt der Raspi ein komprimiertes Abbild seiner SD Card an den Mac, der es auspackt und abspeichert. Vielleicht hat dein Partner auch gerade Lust, ausgepackt zu werden, und tatsächlich ist jetzt ein guter Zeitpunkt dafür. Ich war beim Rewe und hab mir die Treuepunkte lieber da abgeholt.
Deine Daten rauschen derweil durch die Progrämmchen und dann über das Netz von einem auf den anderen Rechner, und dort nochmal durch die Programme, etwa so:
[Raspi] - /dev/mmcblk0 -> dd -> bzip2 -> nc -> LAN/WLAN -> nc -> bzip2 -> dd -> raspi.bak.img - [Mac]
Irgendwann passieren dann zwei Dinge gleichzeitig:
Auf dem Raspi:
nc beendet sich mit einer Ausgabe wie:
949+1 records in
949+1 records out
15931539456 bytes (16 GB) copied, 5280.61 s, 3.0 MB/s
Auf dem Mac:
nc beendet sich mit einer Ausgabe wie:
0+935064 records in
0+935064 records out
15931539456 bytes (16 GB) copied, 5295,53 s, 3,0 MB/s
Und fertig ist das Backup.
Auf dieser Seite kannst du nachlesen, wie man ein Restore auf die SD Card macht:
https://computers.tutsplus.com…d-line-in-os-x--mac-59911
Vorteil dieser Vorgehensweise: man kann das Backup von der Shell aus machen und per cronjob automatisieren. Du könntest es via homebridge-cmd sogar per Siri starten ("Hey Siri, mama Backup" - "Ich habe das hier über Bäcker im Internet gefunden"). Weiterer Vorteil: alles wird gesichert. Du setzt damit den Raspi komplett in den gesicherten Zustand zurück. Nachteil: es ist echt lahmarschig, aber wen interessiert das mitten in der Nacht? Und es wird unverschlüsselt übertragen.
Stefan