Wie können Nextcloud-Daten selbstständig gesichert und wiederhergestellt werden? (Versionierung / Snapshots)

Wie können Nextcloud-Daten selbstständig gesichert und wiederhergestellt werden? (Versionierung / Snapshots)

Wenn mehrere Benutzer mit einer Nextcloud-Installation interagieren, besteht die Möglichkeit von Fehlern. So kann es passieren, dass ein Familienmitglied ein altes Bild löscht oder ein Kollege versehentlich eine Aufgabe oder ein Kalenderereignis abhakt, was zu Problemen für andere Benutzer führt.

Wenn vollständige Dateisystem-Snapshots oder Backups des gesamten Nextcloud-Verzeichnisses verfügbar sind, können diese verwendet werden, um einen alten Zustand des gesamten Servers wiederherzustellen. Dies ist im Falle eines vollständigen Systemabsturzes kein Problem.

Problematisch wird es allerdings, wenn das Problem erst nach einiger Zeit bemerkt wird und Benutzer in der Zwischenzeit andere Daten verändert haben. Dann muss man sich entscheiden, ob man alte Daten rettet und alle Fortschritte vernichtet oder den aktuellen Zustand beibehält.

DerNextcloud-Dokumentationbeschreibt lediglich eine Möglichkeit zur Wiederherstellung der gesamten Installation.

Gibt es eine Möglichkeit, alle Nextcloud-Daten (Dateien, Nachrichten, Kalender, Aufgaben usw.) automatisch und intelligenter zu sichern, sodass sie unabhängig wiederhergestellt werden können? (Vielleicht sogar im Online-Zustand?)

Antwort1

Die Wiederherstellung eines Online-Zustands würde tatsächlich eine vollständige Festplattensicherung erfordern (die natürlich inkrementell erfolgen könnte).

Natürlich sind die Dinge, die sich durch die Interaktion des Benutzers tatsächlich ändern,

  1. die Datenbank (mit allen Benutzerinformationen, Dateimetadaten, Berechtigungen usw.)
  2. der Datenspeicher
  3. Nextcloud selbst (da es möglicherweise aktualisiert wird).

Wir können 3. „lösen“, indem wir einfach bei jeder Sicherung von Nextcloud eine vollständige Sicherung aller drei verlangen (Datenbankformate sind möglicherweise nicht abwärtskompatibel).

In einem typischen containerisierten Nextcloud-Setup hätten Sie zwei oder drei Container:

  1. der Datenbankcontainer „DB“, der zuerst gestartet werden muss (normalerweise mit PostgreSQL)
  2. der Container, auf dem tatsächlich Nextcloud „NC“ läuft, der eine Verbindung zur Datenbank in DB herstellt und das Datenverzeichnis als externes Volume „V“ gemountet hat
  3. (ein Reverse-Proxy, um Nextcloud problemlos hinter HTTPS zu verbergen und die SSL-Zertifikatsverwaltung vom Nextcloud-Container zu entkoppeln)

Ein reguläres Backup würde nun aus

  1. Nextcloud stoppen oder zumindest NC einfrieren oder NC ganz stoppen
  2. Erstellen einer Sicherungskopie von V (was problemlos inkrementell erfolgen kann – jedes moderne Sicherungsprogramm kann das),
  3. Sagen Sie Ihrer Datenbank, dass sie ein Backup erstellen soll ( pg_backup_start). Dadurch wird das Backup in einem konsistenten Zustand gestartet (die Datenbank stellt sicher, dass neue Vorgänge den Zustand, in dem das Backup erstellt wird, nicht beeinflussen).
  4. Direkt nach dem Einleiten des 3. Schritts, um die Funktionalität wiederherzustellen, starte Nextcloud neu (oder thaw, oder starte NC neu)
  5. veranlassen Sie die Datenbank, den Dump in eine Datei zu schreiben ( pg_backup_stop); stellen Sie sicher, dass Sie wissen, welches Daten-Backup zu welchem ​​Datenbank-Backup gehört (sollte aus Uhrzeit und Datum klar ersichtlich sein)

Da der eigentliche Nextcloud-Container ohnehin nicht sehr groß sein wird, da er weder die eigentlichen Daten noch die Datenbank enthält, wäre es grundsätzlich auch sinnvoll, diesen gleich mit den Daten- und Datenbank-Backups mitzuspeichern.

Die Wiederherstellung kann dann auf einer völlig anderen (virtuellen) Maschine erfolgen, indem eine Kopie des Datenbankcontainers hochgefahren wird, das Datenbank-Backup wiederhergestellt wird, in der Zwischenzeit das Daten-Backup entpackt wird und dann, nachdem die Datenbank gestartet wurde, der Nextcloud-Container mit den gemounteten Daten gestartet wird.


Da Container-Runtimes (Podman, aber auch Docker) eine unabhängige Netzwerkverbindung ermöglichen, können Sie tatsächlich so viele Datenbankserver parallel ausführen, wie Sie möchten. Zusammen mit einem Dateisystem, das Sie für das Datenvolumen verwenden und das Snapshots unterstützt (ZFS, Btrfs und Dinge wie LVM-Snapshots + XFS-Thin-Provisioning, Bcachefs …), können Sie dann den alten Status parallel zu Ihrem aktuellen Status untersuchen, ohne dass diese sich gegenseitig beeinträchtigen.

Antwort2

Kalender, Nachrichten usw.
In der TheorieEin Datenbank-Dump sollte Kalendereinträge usw. mit einer oder mehreren INSERT-Abfragen erstellen.
Sie müssen nur die richtigen INSERT-Abfragen finden und versuchen, sie erneut in die aktuelle Datenbank einzufügen. (Ich würde den aktuellen Status sichern, bevor ich das ausprobiere.)

Meiner Meinung nach bieten der Papierkorb und die Versionen den Benutzern gute Möglichkeiten zur Wiederherstellung von Daten.

Dateien & Papierkorb
Standardmäßig ist der Papierkorb aktiviert. Wenn eine Datei von einem Benutzer gelöscht wird, wandert sie in den Papierkorb. Sie können config/config.phpmit dem Eintrag angeben, wie lange die Dateien im Papierkorb bleiben sollen: trashbin_retention_obligation' => 'auto, 128',(Weitere Informationen finden Sie im Handbuch). Wenn der verfügbare Speicherplatz/Benutzerkontingent jedoch unter 50 % fällt, wird der Papierkorb möglicherweise früher geleert oder wenn die Verwaltung occ trashbin:expire;occ trashbin:cleanupmanuell ausgeführt wird. (oder nach Wahl des Benutzers)
Ich verwende den Kalender nicht, vielleicht landen gelöschte Kalendereinträge auch im Papierkorb und könnten wiederhergestellt werden – ich weiß es nicht.

Dateien & Version
Eine weitere Sache ist die „Version Nextcloud App“, die die Option hinzufügt, ältere Versionen einer Datei wiederherzustellen. Das Alter kann mit 'versions_retention_obligation' => 'auto, 128',in festgelegt werden config.php. Aktivieren Sie es im Abschnitt Nextcloud-Apps. Ich habe diese App nicht verwendet, sollte wie Schattenkopien sein.

Wiederherstellen einzelner Dateien
Solange Sie keine Verschlüsselung verwenden und nur lokale Konten nutzen, werden die Benutzerdaten im nextcloud/data/usernameVerzeichnis gespeichert. Wenn Sie mit Active Directory / OpenLDAP verbunden sind, ist das Verzeichnis nextcloud/data/uuiddie UUID, die in der Datenbank aufgelöst werden konnte. ( SELECT ldap_dn FROM oc_ldap_user_mapping WHERE owncloud_name='$U_ID')
Dateien können manuell aus dem gesicherten Benutzerverzeichnis wiederhergestellt und in das aktuelle Benutzerdatenverzeichnis kopiert werden. Stellen Sie sicher, dass Sie occ files:scananschließend alle Dateien mit scannen.

Wenn die Verschlüsselung aktiviert ist – :) viel Glück.

verwandte Informationen