indi-allsky auf einem Raspberry-Pi-System schreibt regelmäßig Daten (Logs, Datenbanken, Bilder, Videos).
microSD-Karten sind dafür nur bedingt ausgelegt und können im worst case ohne Vorwarnung ausfallen.
Ein 1:1-Backup der gesamten SD-Karte ermöglicht im Ernstfall:
- Neue microSD-Karte einstecken
- Backup zurückspielen
- System startet exakt im vorherigen Zustand
Was wird in dieser Anleitung gesichert?
Das hier beschriebene Verfahren erstellt ein vollständiges, bootfähiges Abbild der SD-Karte inklusive:
- Bootloader
- Partitionstabelle
- Betriebssystem
- installierter Software
- Konfigurationen
- Daten (z. B. indi-allsky, Bilder, Videos)
Es handelt sich nicht um ein Dateibackup, sondern um ein Block-Level-Image.
Voraussetzungen
Raspberry Pi ist per Netzwerk erreichbar
SSH-Zugriff vorhanden
Backup wird von einem anderen Rechner aus gestartet (Linux, macOS, Windows mit WSL)
Ausreichend freier Speicherplatz auf dem Backup-Rechner
Schritt 1: SSH-Zugriff auf den Raspberry Pi prüfen
Vom Backup-Rechner aus:
ssh pi@<IP-ADRESSE-DES-PI>
Wenn die Anmeldung funktioniert, kann mit dem Backup begonnen werden.
Schritt 2: SD-Karte auf dem Raspberry Pi identifizieren
Auf dem Raspberry Pi:
lsblk
Typische Ausgabe:
mmcblk0 59.5G ├─mmcblk0p1 256M └─mmcblk0p2 59.2G
Wichtig ist das gesamte Gerät:
/dev/mmcblk0
Nicht einzelne Partitionen sichern.
Schritt 3: Schreibende Dienste kurz stoppen (empfohlen)
Wenn Anwendungen laufen, die aktiv schreiben (z. B. indi-allsky, Datenbanken, Kamerasoftware), sollten diese kurz gestoppt werden.
Beispiel für indi-allsky (klassische Installation):
systemctl --user stop indi-allsky.service 2>/dev/null || true systemctl --user stop gunicorn-indi-allsky.socket 2>/dev/null || true systemctl --user stop gunicorn-indi-allsky.service 2>/dev/null || true systemctl --user stop indiserver.service 2>/dev/null || true systemctl --user stop indi-allsky.timer 2>/dev/null || true systemctl --user stop indiserver.timer 2>/dev/null || true
Dadurch wird ein konsistentes Backup sichergestellt.
Schritt 4: Vollständiges Backup per SSH erstellen
Der eigentliche Backup-Befehl wird auf dem Backup-Rechner ausgeführt:
ssh pi@<IP-ADRESSE-DES-PI> \ "sudo dd if=/dev/mmcblk0 bs=4M status=progress" \ | gzip > raspberry-backup-$(date +%F).img.gz
Was dabei passiert:
- dd liest die komplette SD-Karte roh
- Daten werden über SSH übertragen
- Backup wird lokal komprimiert gespeichert
- Leerer Speicherplatz wird stark reduziert
Je nach Kartengröße dauert der Vorgang einige Minuten.
Wichtig: Es wird ein komplettes Abbild erstellt – es ist beispielsweise nicht möglich, einzelne Verzeichnisse zu überspringen.
Schritt 5: Dienste wieder starten
Nach Abschluss des Backups können die zuvor gestoppten Dienste wieder gestartet werden
oder alternativ der Raspberry Pi neu gebootet werden:
sudo reboot
Wo wird das Backup gespeichert?
Das Backup wird auf dem Rechner gespeichert, auf dem der Befehl ausgeführt wurde, nicht auf dem Raspberry Pi.
Das Backup befindet sich im aktuellen Arbeitsverzeichnis, z. B.:
~/raspberry-backup-2025-01-07.img.gz
Wiederherstellung im Ernstfall
Falls die SD-Karte defekt ist:
- Neue microSD-Karte in den Backup-Rechner stecken
- Backup zurückspielen:
gzip -dc raspberry-backup-2025-01-07.img.gz \ | sudo dd of=/dev/mmcblk0 bs=4M status=progress sync
- microSD-Karte in den Raspberry Pi einsetzen
- Starten
Das System läuft danach exakt wie zum Zeitpunkt des Backups.
Typische Fehler vermeiden
- Kein Backup auf derselben microSD-Karte speichern
- Nicht nur einzelne Partitionen sichern
- Ziel-Device beim Restore immer sorgfältig prüfen
- Backup mindestens einmal testweise zurückspielen