Datensicherung für die Nextcloud mit rsync
In diesem Beitrage zeige ich auf, wie man seine Nextcloud-Daten mithilfe 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}
[adrotate banner="47"]
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
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Follow Me❗️