Zum Inhalt

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.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj

Source