In diesem Beitrage zeige ich auf, wie man seine Nextcloud-Daten mit Hilfe eines Skripts und rsync auf ein openmediavault sichern kann.
Für die Sicherung via rsync ( ➡ https://de.wikipedia.org/wiki/Rsync) habe ich zwei Skripte im Verzeichnis /etc/skripte abgespeichert. Das erste Skript enthält das eigentliche Backup, die zweite Datei enthält Pfade, die vom Backup ausgeschlossen werden sollen.
Das openmediavault wird automatisch von Nextcloud-Server via NFS eingebunden, sobald das NAS angeschaltet wird. Es ist nicht erforderlich das Laufwerk über die Datei /etc/fstab zu mounten.
Backup Skript
Das Skript enthält einige Variablen im oberen Bereich, die ihr an eure Installation anpassen müsst.
Der Name des Skripts für das Beispiel lt. rsync-bakup-skript.sh.
#!/bin/bash # by strobelstefan.org # 2020-08-05 # Version: 1.0 # Datensicherung für die Nextcloud mit rsync # https://strobelstefan.de/?p=8094 # # This script creates a full backup of the Nextcloud data storage on an # external storage located on openmediavault ################################### # Define Variables ################################### #Name of Nextcloud NEXTCLOUD="nextcloud" #Backup storage BACKUPSTORAGE="/mnt/openmediavault/" #Source patch SOURCE="/mnt/data/" #Target path on BACKUPSTORAGE TARGET="/mnt/openmediavault/data/" #Exclude from RSYNC file EXCLUDEFILE="excludefile.txt" # E-Mail Address where the export should be emailed to EMAIL="email@email.de" ################################### #Starts rsync Process From Source to Target ################################### # Copies the files from Source to Target echo $(date +%Y-%m-%d_%H-%M-%S) " - Start rsync process" # Dieser Abschnitt erklärt die Syntax von rsync #sudo rsync -av --stats --delete --log-file=${LOGFILE} --exclude ${EXCLUDE} --exclude ${EXCLUDE1} --exclude ${EXCLUDE2} --exclude ${EXCLUDE3} --exclude ${EXCLUDE4} ${SOURCE} ${TARGET} # Mit Log Files von rsync #sudo rsync -av --stats --delete --exclude ${EXCLUDE} --exclude ${EXCLUDE1} --log-file=${LOGFILE} ${SOURCE} ${TARGET} # Ohne Log Files sudo rsync -av --stats --exclude-from=${EXCLUDEFILE} --delete ${SOURCE} ${TARGET} echo $(date +%Y-%m-%d_%H-%M-%S) " - Finished rsync process" ################################### # Sends E-Mail to Defined Address ################################### # Sends LOGFILE and compressed rsync log file vie e-mail to defined address echo $(date +%Y-%m-%d_%H-%M-%S) " - RSYNC process finished for "${NEXTCLOUD} | mutt ${EMAIL} -s "RSYNC process finished for "${NEXTCLOUD}
Gib mir gerne einen Kaffee ☕ aus!
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.
bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj
Exclude Datei
Hier handelt es sich lediglich um eine Text-Datei. Dort tragt ihr die Pfade ein, die nicht per rsync auf das openmediavault-Laufwerk gesichert werden sollen.
Ihr müsst zwingend auf die Reihenfolge achten. Im Beispiel wird das deutlich:
+ /*/files - /*/files_trashbin - /*/files_versions
Das „+“ gibt an, dass der Ordner „files“ gesichert werden soll.
Der Unterordner „files_trashbin“ wird durch das Setzen eines „–“ von der Datensicherung ausgeschlossen. Auch mit dem anderen Unterordner „files_versions“ wird so verfahren, er wird von der Datensicherung ausgeschlossen. Alle anderen Ordner, die sich im Verzeichnis „files“ befinden werden ganz normal gesichert.
Die Datei sieht dann so ähnlich aus.
Der Name der Datei ist inm vorherigen Skript über die Variable EXCLUDEFILE=““ auf den Namen definiert „excludefile.txt“.
- /appdata_oclxq0g8z5d1 - /updater-oclxq0g8z5d1 - /*/cache + /*/files - /*/files_trashbin - /*/files_versions - /*/uploads
Skript ausführen
Nachdem ihr beide Dateien in das Verzeichnis /etc/skripte gespeichert habe, passt ihr die Zugriffsrechte noch an.
sudo chown root:root rsync-bakup-skript.sh sudo chmod 0600 rsync-bakup-skript.sh sudo chmod +x rsync-bakup-skript.sh sudo chown root:root excludefile.txt sudo chmod 0600 excludefile.txt
Den Datensicherungsprozess könnt ihr manuell starten. Dazu ist der Befehl auf der Konsole auszuführen
sudo sh ./rsync-bakup-skript.sh
Weiterführende Links
- Raspberry Pi SD-Karte im Livebetrieb klonen – Neue Version
- Datensicherung für die Nextcloud mit BorgBackup

ist absolut technik-begeistert und großer Fan von Linux und Open Source. Raspberry Pi Bastler der ersten Stunde und nach wie vor begeistert von dem kleinen Stück Hardware, auf dem er tolle Projekte umsetzt. Teilt hier seine Erfahrungen mit Nextcloud, Pi-hole, YubiKey, Synology und openmediavault und anderen spannenden IT-Themen. Nutzt Markdown und LaTeX zum Dokumentieren seiner Projekte und Gitea zum Versionieren. Sitzt vor einem 49“ Monitor, nutzt Windows und MacOS zum Arbeiten, Linux auf seinen Servern und virtuellen Maschinen und hört dabei Spotify und MP3s und Radio-Streams über seinen RadioPi.
Vielen Dank für diese schöne Lösung! Hat mir sehr weiter geholfen!
Leider verstehe ich die Lösung nicht ganz. Was muss ich auf omv Seite vorbereiten einstellen und was ist allenfalls auf nextcloudpi Seite einzustellen / zu aktivieren damit die Skripten laufen. Danke.
Hallo Michael,
das Skript und die Exclude-Datei liegen auf dem Raspberry Pi und werden dort ausgeführt.
Das omv ist hier wie ein „externer“ Speicher zu sehen, der halt irgendwo im Netzwerk hängt.
Grüße
Stefan
Hallo Stefan
Danke. Ist klar. Aber es muss doch NFS aktiv sein am omv. Und wo im veröffentlichten Skript sind die Befehle die omv NFS Freigabe zu mounten bzw. nach dem BackUp wieder auszuhängen? Oder habe ich Tomaten auf den Augen …. Danke.
Hallo Michael,
das stimmt, es fehlt der Abschnitt für das Mounten des NFS-Shares in dem Skript.
OMV:
Beim openmediavault musst du den NFS-Server einrichten und deine Nextcloud (IP-Adresse in diesem Beispiel = 192.168.2.111) erlauben darauf zuzugreifen.
Nextcloud:
Hier hast du zwei Möglichkeiten den NFS-Ordner von omv einzubinden.
Möglichkeit 1: /etc/fstab
Mit dem Eintrag in der „fstab“ wird das NFS-Share automatisch beim Starten deines Raspberry Pis eingebunden.
Du erstellst den Ordner auf dem Pi, wo der NFS-Share eingebunden werden soll
In der /etc/fstab trägst du dann die Zeile entsprechend diesem Beispiel ein
Das Skript kannst du dann automatisch per Cron starten und eine Datensicherung auf omv durchführen.
Möglichkeit 2: Skript
Möchtest du das NFS-Share nicht automatisch bei jedem Start des Pis einbinden lassen, z.B. wenn dein omv nicht immer angeschaltet ist, dann kannst du den Ordner auch beim Ausführen des Skripts einbinden und auswerfen lassen.
Du erstellst auch hier einen Ordner auf dem Pi, wo der NFS-Share eingebunden werden soll
Im Skript selbst kannst du dann die Abschnitte entsprechend den Beispielen eintragen:
Am Ende des Skripts kannst du dann den NFS-Share auch automatisch wieder auswerfen. Dazu fügst du die Zeile ganz am Ende ein:
Du kannst für NFS und den erstellten Ordner auch Variablen vergeben.
Die musst du dann am Anfang des Skripts nach dem Schema eintragen:
Das Auswerfen sieht dann z.B. so aus.
Ich hoffe das hilft dir weiter.
Viel Erfolg!
Grüße
Stefan
Hallo Stefan,
vielen Dank für deine Anleitung.
Ich habe noch ein paar Fragen und Anmerkungen dazu:
Warum nutzt du nicht den Zeitstempel im Backup-Ordner, wie in den nextclouds-docs beschrieben:
https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html
bzw. hast du eine Ahnung, was dieser Zeitstempel dort soll? Der macht doch mit Zeitstempel im Ordnernamen nicht jedes mal ein Vollbackup, oder?
zu deinem Skript:
Vielleicht erwähnst du noch den Hinweis, dass für den E-Mail-Versand mutt u. a. installiert werden müsste. Das hatte ich bei mir noch nicht mit drauf.
Vielen Dank und viele Grüße
Thomas
Hallo Thomas,
Ich verwende in meinem Skript ganz bewusst keine Nextcloud-Befehle.
Es soll im laufenden Betrieb das Datenverzeichnis auf ein anderes Speichermedium kopiert werden, als reines Backup.
Den Zeitstempel der Nextcloud habe ich noch nicht ausprobiert.
Du kannst auch eine platzsparende Variante für dein Backup verwenden
➡ Datensicherung für die Nextcloud mit BorgBackup
Eine ganz ausführliche Schritt-für-Schritt-Anleitung für die Nextcloud-Installation gibt es auch hier im Blog. Dort wird die Konfiguration von Postfix und mutt beschrieben
➡ Schritt-für-Schritt zur eigenen Nextcloud
oder auch hier auf Codeberg:
➡ https://codeberg.org/strobelstefan.org/nextcloud-installation-configuration
Grüße
Stefan