Backup Nextcloud & Datenbank – Das Restore

Änderungsstand: 2022-01-04

Da das Restore, besonders für Anfänger, sehr trivial erscheint, empfehle ich unbedingt, folgendes vorher auf einem Test-System ausgiebig zu testen. Man sollte schon etwas Verständnis mitbringen und nicht wild die Befehle kopieren…

Egal, für welche Backupvariante man sich entscheidet. Wenn man das Restore benötigt, schauen die Meisten komisch aus der Wäsche 🙂 . Hier nun die Erläuterung, wie man ein Restore am bestehendem System veranlasst. Ich verwende /linuxserver/nextcloud-Docker und postgresql14 als Datenbank-Docker.

Meine Backuppfade:

  • Nextcloud Installation: /mnt/user/backups/nc-rsbackup/nextcloud-test
  • Nextcloud Daten: /mnt/user/backups/nc-rsbackup/nextcloud-test-data
  • PostgreSQL Installation: /mnt/user/backups/nc-rsbackup/postrgesql14-test
  • Datenbank-Dump: /mnt/user/backups/nc-rsbackup/dumpfile

Meine Original-Verzeichnisse:

  • Nextcloud Installation: /mnt/cache/appdata/nextcloud-test
  • PostgreSQL Installation: /mnt/cache/appdata/postgresql14-test
  • Nextcloud Daten: /mnt/user/data/nextcloud-test-data

Meine verwendeten Docker-Namen:

  • Nextcloud: nextcloud-test
  • Datenbank: postgresql14-test

Alle Backups haben immer den identischen Versionsstand. Das heißt, dass alle hier erstellten Backups in einem Rutsch angelegt wurden. Die Datenbank passt also dementsprechend auch zu den angelegten Daten, Benutzern etc…

Ich setze im Restore absichtlich NICHT das Nextcloud-Datenverzeichnis ein, obwohl ich es im Backup mit anlege. Das dauert mir zu lange. Dafür verwende ich zum Synchronisieren des Datenbestandes mit der Datenbank einen extra Befehl, der am Ende des Guides angezeigt wird. Die Ausnahme(n) hierfür wäre, wenn ich wüsste, dass ein Virus das System kompromittiert hat oder jemand Daten löschte, die wieder benötigt werden. Ansonsten ist das Datenverzeichnis bis zum Schluss immer aktuell, auch wenn z.B. ein Crash paar Stunden nach dem letzten Backup auftreten würde.

Meine Backups wurden per Backup-Script von Marc Gutt angelegt. Ich passte dieses Script für mein Nextcloud an. Hier noch einmal der Guide dazu.

Für das Restore am selben System wird meist die Datenbank und das Nextcloud-Installationsverzeichnis benötigt. Der häufigste Fall ist, dass bei einem Versions-Update das Nextcloud nicht mehr funktioniert. Selten benötigt man die eigentlichen Nextcloud-Daten als Restore am selben System. Die Verweise zu den Daten sind in der Nextcloud-Konfigurationsdatei eingetragen und somit immer aktuell. Ich simuliere nun einen Crash. Folgende Reihenfolge werde ich nun für das Restore abarbeiten:

  1. Docker Nextcloud beenden
  2. Docker Datenbank beenden
  3. Datenbankverzeichnis und Nextcloud-Installationsverzeichnis löschen
  4. Original-Verzeichnisse wieder erstellen
  5. Restore Datenbank tätigen
  6. Restore Nextcloud-Installationsverzeichnis tätigen
    1. Restore Nextcloud-Daten tätigen (verwende ich nur im dringenden Notfall
  7. Docker Datenbank starten
  8. Docker Nextcloud starten

Auch hier wieder die eigenen Pfade bzw. Werte verwenden!

Für das Restore verwende ich das letzte angelegte Backup. Mit dem Midnight Commander kann das man die Verzeichnisse relativ einfach einsehen.

Zu 1. und 2. – Docker beenden: Entweder in der Gui die Docker beenden oder im Terminal folgenden Befehl verwenden:

sudo docker stop nextcloud-test postgresql14-test

Zu 3. – Verzeichnisse löschen:

Entweder im Terminal mittels Midnigt-Commander oder per CLI:

Achtung! -rf löscht unwiderruflich das angegebene Verzeichnis inkl. Daten – ohne Rückfrage!

sudo rm -rf /mnt/cache/appdata/postgresql14-test && sudo rm -rf /mnt/cache/appdata/nextcloud-test

Zu 4. – Verzeichnisse erstellen (optional):

sudo mkdir -p /mnt/cache/appdata/nextcloud-test /mnt/cache/appdata/postgresql14-test

Zu 5. – Restore Datenbank:

sudo rsync -aAxv /mnt/user/backups/nc-rsbackup/postgresql14-test/20220105_000323/ /mnt/cache/appdata/postgresql14-test/

Zu 6. – Restore Nextcloud-Installationsverzeichnis:

sudo rsync -aAxv /mnt/user/backups/nc-rsbackup/nextcloud-test/20220105_000300/ /mnt/cache/appdata/nextcloud-test/

Zu 6.1. – Restore Nextcloud-Datenverzeichnis (optional – meist nicht notwendig):

sudo rsync -aAxv /mnt/user/backups/nc-rsbackup/nextcloud-test-data/20220105_000300/ /mnt/user/data/nextcloud-test-data/

Zu 7. und 8. – Docker starten:

Entweder in der Gui die Docker starten oder im Terminal folgenden Befehl verwenden:

sudo docker start postgresql14-test nextcloud-test

Unter Umständen muss der Maintenance-Mode erneut ausgeschaltet werden:

sudo docker exec --user abc nextcloud-test php /config/www/nextcloud/occ maintenance:mode --off

Syncronisieren der Nextcloud-Daten mit der Datenbank (für alle Benutzer):

Das ist notwendig, wenn die Nextclouddaten nicht zum aktuellen Backupstand gehören (z.B. Backupstand gestern und die Daten von heute). Mit diesem Befehl wird die Datenbank wieder auf aktuellem Stand gebracht. Das gilt für alle angelegten Benutzer.

sudo docker exec --user abc nextcloud-test php /config/www/nextcloud/occ files:scan --all

Wenn schon gestartet, Nextcloud-Browserfenster aktualisieren und die Daten sind wieder verfügbar.

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten