Nextcloud - Backups automatisch erstellen und wiederherstellen

Dieser Beitrag befasst sich mit dem Theme Backup & Restore einer bestehenden Nextcloud Instanz. Dabei wird auf ein Skript von @decatec_de zurückgegriffen.

Nextcloud - Backups automatisch erstellen und wiederherstellen

Kein Backup - kein Mitleid.

Jeder Admin sollte diese Phrase bereits kennen, denn gegen Defekte, unachtsame Momente, Software Bugs sowie Anwenderfehler hilft nunmal nur das gute alte Backup. Auf die Nextcloud Umgebungen angepasst heisst dies, wir müssen folgende Verzeichnisse und Dateien sichern:

  • Webroot (/var/www/nextcloud)
  • Datenverzeichnis (/var/nextcloud_data)
  • Nextcloud Datenbank

Backupskript

Das ganze händisch zu sichern, ist möglich aber unnötig kompliziert, wenn man weiß, dass es bereits eine gute Alternative in Form eines Skriptes von @decatec gibt.
Das komplette Repo ist vorbildlich dokumentiert und mit vielen Kommentaren ausgestattet, zu bearbeitende Punkte - meist Zugangsdaten, Dateipfade etc. - sind stets mit TODO gekennzeichnet.

Im entsprechenden Skript müssen die Variablen noch angepasst werden, anschließend kann das Backup ausgeführt werden.

chmod u+x NextcloudBackup.sh
./NextcloudBackup.sh

Das ganze lässt sich hervorragend auch über einen Cronjob ansprechen, um das wöchentliche Vollbackup umzusetzen:

0 6 * * 0 /path/to/script/NextcloudBackup.sh >/dev/null 2>&1
Cronjob Vorschlag

Mit dieser Konstellation würde jeden Sonntag um 6 Uhr Systemzeit ein Backup der kompletten Nextcloud Instanz angefertigt werden.

Wiederherstellen

Ein Backupkonzept ist nur dann nützlich, wenn es im Ernstfall auch funktioniert. Solltet ihr das verlinkte Script benutzen, stellt in jedem Fall auch sicher, dass es zum backuppen UND wiederherstellen funktioniert, im besten Fall also einmal komplett durch exerzieren.

Um eure Nextcloud Instanz aus einem erstellten Backup wiederherzustellen, braucht ihr das entsprechende NextcloudRestore Skript, sowie den Datenbestand aus einem kompletten Backup.

In meinem Beispiel liegen die Dateien in folgenden Verzeichnissen:

  • Restore Skript: /home/NextcloudRestore.sh
  • Backupname: 20210525_000001

Innerhalb des Skriptes müssen noch Datei Speicherort der Backups, sowie Datenbankverbindung (Username/Passwort) editiert werden.

Damit sind alle Argumente erfüllt.
Nachdem das Skript ausführbar gemacht wurde, kann das Backup eingespielt werden.

chmod u+x /home/NextcloudRestore.sh
sudo ./NextcloudRestore.sh 20210525_000001

Info: Solltet ihr das Backup auf einem neuen Host einspielen müssen, zum Beispiel als Folge eines Desaster Recovery Plans, muss der Datenbankuser zuvor angelegt sein, sowie die Datenbank (leer) existieren. Ansonsten läuft das Skript in Fehler.

Der User, sowie die dazugehörige Datenbank lässt sich über folgenden Command erstellen:

CREATE USER [email protected] IDENTIFIED BY 'PasSw0rT';
CREATE DATABASE nextcloud_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES on nextcloud_db.* to [email protected];
FLUSH privileges;
exit;

Die Zugangsdaten und Usernamen müssen identisch zu jenen aus dem Backup sein.

Nachtrag:

Wie ich gesehen habe, gibt es jetzt auch ein Setup Skript, welches die Einrichtung per Hand abnehmen soll. Bei Ausführung werden übliche Parameter gleich gesetzt.
Jedoch solltet ihr VOR Ausführen der Skripte checken, ob die Werte tatsächlich übernommen wurden!