Contents — find the section you need

Change parameters and verify

Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.

Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.

The experiment controls are in English.

Open experiment panel in a new tab

Download reproduction source

Ein erfolgreicher Backup-Exit-Code beweist nicht, dass ein Dienst mit den gespeicherten Daten neu gestartet werden kann. Trennen Sie die Wiederherstellung von Dateien, die Lesbarkeit der Datenbank und die benötigten Anwendungsoperationen. Beginnen Sie mit einer Übung, die niemals auf Produktionsdaten zugreift.

Definition einer erfolgreichen Wiederherstellung

Diagram 1 · Use the button to switch views
Konsistente Daten erfassen, in ein leeres Ziel wiederherstellen, dann Hashes, Datenbankintegrität und Anwendungszugriffe überprüfen

Ein Fotodienst benötigt Beziehungen zwischen Bildern und Datenbankeinträgen. Die Authentifizierung kann auch von Konfigurations- und Verschlüsselungsschlüsseln abhängen. Definieren Sie das akzeptable Datenverlustfenster (RPO) getrennt von der akzeptablen Wiederherstellungsdauer (RTO). Backup-Frequenz und Wiederherstellungszeit sind unterschiedliche Messgrößen.

Isolierte Übung durchführen

Speichern Sie restore_lab.py und führen Sie python3 restore_lab.py aus. Es verwendet die Python-Standardbibliothek 3.12.3. Bei jedem Durchlauf werden ein neues temporäres Verzeichnis, eine Textdatei und ein SQLite-Eintrag erstellt. Es werden weder bestehende Dienste noch Datensätze gestoppt oder gelöscht.

Das Skript verwendet die Backup-API von SQLite, um die Datenbank zu kopieren, sie zusammen mit der Textdatei in ein ZIP-Archiv zu packen und in einem anderen leeren Verzeichnis wiederherzustellen. Es prüft SHA-256-Hashes, PRAGMA integrity_check und einen bekannten SQL-Eintrag. Siehe die offizielle Erklärung der Backup-API von SQLite.

file_hashes: pass
sqlite_integrity: pass
application_read: pass
scope: synthetic fixture only

Alle drei Prüfungen waren am 7. September 2026 erfolgreich. Hierbei bezieht sich „Anwendung lesen“ auf die bekannte SQL-Abfrage, nicht auf das Starten von Immich oder Nextcloud. Das ausgegebene directory enthält die gespeicherten Daten. Das ZIP-Archiv in diesem temporären Verzeichnis dient als Übungsobjekt und bietet keinen Schutz vor Datenverlust.

Konsistente Erfassung realer Dienste

Das herkömmliche Kopieren von Live-Datenbankdateien gewährleistet möglicherweise nicht die für die Wiederherstellung erforderliche Konsistenz. Prüfen Sie für PostgreSQL die Anforderungen von Methoden wie SQL-Dumps. Die Konsistenz zwischen dem Datenbank-Snapshot und referenzierten externen Dateien ist ein separates Thema.

| Komponente | Beibehalten | Wiederherstellungsprüfung |

--- | --- | --- |

Konfiguration | Compose, Einstellungen und Image-Versionen | Gewünschte Konfiguration wiederherstellen |

Datenbank | Konsistenter Dump oder unterstütztes Backup | Lade- und Integritätsprüfungen erfolgreich |

Uploads | Datei- und Metadatenbeziehungen | Bekannte Dateien öffnen |

Geheimnisse | Schlüssel und Authentifizierungsmaterial | Autorisierte Administratoren können wiederherstellen |

Übereinstimmende Hashwerte bestätigen die Übereinstimmung mit der erfassten Kopie. Sie beweisen nicht, dass die gesamte Anwendung zum Zeitpunkt der Erfassung konsistent war.

Zusätzliche Prüfungen mit restic

Das folgende Verfahren gilt für eine Umgebung, in der restic bereits installiert ist; restic wurde in dieser Übung nicht ausgeführt. Konfigurieren Sie das Repository und die Anmeldeinformationen separat und notieren Sie restic version. Wählen Sie einen Snapshot aus und stellen Sie ihn in einem leeren Ziel wieder her.

restic snapshots
restic check --read-data
restic restore SNAPSHOT_ID --target /path/to/empty-restore

Ersetzen Sie die ID und den Pfad durch Ihre Umgebung. Die Wiederherstellung (https://restic.readthedocs.io/en/stable/050_restore.html) und die Repository-Prüfung (https://restic.readthedocs.io/en/stable/045_working_with_repos.html) beantworten unterschiedliche Fragen. Berücksichtigen Sie Laufzeit- und Übertragungskosten beim Lesen gespeicherter Daten mit --read-data.

Wiederherstellungsprotokoll erstellen

Protokollieren Sie Erfassungszeitpunkt, Start und Ende der Wiederherstellung, Datenvolumen, Versionen, Ergebnisse der Dateiprüfung und Anwendungsvorgänge. Testen Sie die Wiederherstellung in einer isolierten Umgebung, bevor Sie Produktionsdaten ersetzen. Deaktivieren Sie dabei ausgehende E-Mails und Webhooks. Authentifizierungs- und Dateileseprüfungen machen diese einfache Aufgabe zu einem dienstspezifischen Verfahren für die Home-Server-Plattform (/en/project/home-server.html).

What to read next

Review the computing platformFunktionsweise von Einplatinencomputern und wichtige Produkte – Raspberry Pi 5, Jetson, CoralReview the backgroundWo Docker-Daten gespeichert werden: Ebenen, Volumes und BackupsContinue the seriesMessung des Stromverbrauchs von Heimservern: Leerlauf, Inferenz und Speicherung