Datensicherung für die Nextcloud mit rsync

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 angeschalten 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.org/?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}

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

Interessante Links



Meine verwendete Hardware

Bei den nachfolgenden Links handelt es sich um Amazon Affiliate Links.

openmediavault

Nextcloud

(**) Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

5 Antworten auf „Datensicherung für die Nextcloud mit rsync“

  1. 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.

    1. 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

      1. 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.

        1. 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

          
          sudo mkdir /mnt/omv-nfs
          

          In der /etc/fstab trägst du dann die Zeile entsprechend diesem Beispiel ein

          
          #Openmediavault rsync Backup
          192.168.2.111:Sicherung /mnt/omv-nfs nfs    defaults    0 0
          

          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

          
          sudo mkdir /mnt/omv-nfs
          

          Im Skript selbst kannst du dann die Abschnitte entsprechend den Beispielen eintragen:

          
          ###################################
          # Mounts omv NFS share
          ###################################
          sudo mount 192.168.2.111:Sicherung /mnt/omv-nfs
          

          Am Ende des Skripts kannst du dann den NFS-Share auch automatisch wieder auswerfen. Dazu fügst du die Zeile ganz am Ende ein:

          
          ###################################
          # Unmounts omv NFS share
          ###################################
          sudo umount /mnt/omv-nfs
          

          Du kannst für NFS und den erstellten Ordner auch Variablen vergeben.
          Die musst du dann am Anfang des Skripts nach dem Schema eintragen:

          
          BACKUPSTORAGE="/mnt/omv-nfs"
          

          Das Auswerfen sieht dann z.B. so aus.

          
          sudo umount ${BACKUPSTORAGE}
          

          Ich hoffe das hilft dir weiter.

          Viel Erfolg!

          Grüße

          Stefan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.