Bevor es los geht, nein der Name Borg hat nichts mit den Borg aus dem Star Trek Universum zu tun. Der Name leitet sich vom Entwickler Jonas Borgström ab.
Aber nun zum Backup-Tool.
BorgBackup ist ein Deduplikationsbackupprogramm. Ganz grob gesagt bas bedeutet, dass Daten, die mehrmals auf dem Quelllaufwerk vorhanden sind, nur einmal auf dem Backup-Laufwerk abgespeichert werden.
Das spart im ganzen Prozess Zeit für die Übertragungen der Daten und auch Platz auf dem Backup-Laufwerk. BorgBackup zerlegt zu diesem Zweck das Backup in kleinere Teile, um diese zu vergleichen. Sind die Daten bereits im Backup vorhanden, werden sie nicht noch einmal abgespeichert. Das spart vor allem bei sehr großen Dateien viel Zeit, wie bei Abbildern von virtuellen Maschinen.
BorgBackup bietet weitere nützliche Features an, wie z.B. eine komplette Verschlüsselung der Backup-Daten.
Bei mir verwende ich BorgBackup um eine Datensicherung meiner Nextcloud-Instanz auf ein openmediavault zu erstellen. Dazu habe ich auf dem Nextcloud-Server ein kleines Shell-Skript angelegt, um die Datensicherung (fast) automatisch durchzuführen.
Auch openmediavault hat eine Erweiterung, die BorgBackup unterstützt. Die habe ich aber in diesem Fall bewusst nicht genommen, sondern ich wollte den gesamten Backup-Prozess vom Nextcloud-Server aus starten.
openmediavault
In openmediavault ist das NFS-Laufwerk einzurichten, damit ihr das bei eurem Nextcloud-Server einbinden könnt.
Eine Installationsanleitung für euer eigenes openmediavault-Nas findet ihr hier:
➡ openmediavault – NAS mit einem Raspberry Pi 4

Im Artikel ➡ openmediavault – NAS mit einem Raspberry Pi 4 findet ihr weitere Informationen zur Konfiguration von openmediavault.
Nextcloud
Das folgende Skript kann an die eigenen Bedürfnisse angepasst werden. Ich habe versucht Variablen zu verwenden, um die Konfiguration recht einfach zu gestalten.
Eine Installationsanleitung für eure eigene Nextcloud findet ihr hier:
➡ Nextcloud auf dem Raspberry Pi
Bei mir auf dem Nextcloud-Server habe ich zwei Skripte angelegt:
- das erste Skript sichert die Nextcloud Configuration, z.B. borgbackup-nextcloud-config.sh
- das zweite Skript sichert den kompletten Nextcloud-Daten, z.B. borgbackup-nextcloud-data.sh
Beide Skripte habe ich auf meinem Nextcloud-Server im Verzeichnis „/etc/skripte“ abgespeichert.
Dieses Skript sichert das Verzeichnis /mnt/data, dass sämtliche Daten meiner Nextcloud enthält. Weiterführende Informationen dazu findet ihr in meinem Artikel
➡ Nextcloud auf dem Raspberry Pi
Gib mir gerne einen Kaffee ☕ aus!
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.
bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj
Für die Anleitung nenne ich das Skript borgbackup-nextcloud-data.sh
#!/bin/bash # Skript erstellt von strobelstefan.org # Datensicherung für die Nextcloud mit BorgBackup # https://strobelstefan.de/?p=8073 # Skriptvorlage BorgBackup # https://wiki.ubuntuusers.de/BorgBackup/ # https://borgbackup.readthedocs.io/en/stable/ ############################## # BorgBackup Konfiguration ############################## # Hier Pfad zum Sicherungsmedium angeben. zielpfad="/mnt/openmediavault/Nextcloud-Backup/borgbackup" # Hier Namen des Repositories angeben. repository="nextcloud-data" # Hier eine Liste mit den zu sichernden Verzeichnissen angeben sicherung="/mnt/data/" # Hier die Art der Verschlüsselung angeben # Bitte BorgBackup für weitere Informationen zur Verschlüsselung anschauen # --> https://readthedocs.org/projects/borgbackup/downloads/ verschluesselung="repokey" # Hier die Art der Kompression angeben # Bitte BorgBackup für weitere Informationen zur Verschlüsselung anschauen # --> https://readthedocs.org/projects/borgbackup/downloads/ kompression="lz4" # Hier angeben, ob vor der Ausführung von BorgBackup auf vorhandene Root-Rechte geprüft werden soll # z.B. rootuser="ja" oder rootuser="nein" rootuser="nein" # Hier angeben nach welchem Schema alte Archive gelöscht werden sollen. # Die Vorgabe behält alle Sicherungen des aktuellen Tages. Zusätzlich das aktuellste Archiv der # letzten 7 Sicherungstage, der letzten 4 Wochen sowie der letzten 12 Monate. pruning="--keep-within=1d --keep-daily=7 --keep-weekly=4 --keep-monthly=12" ############################## # Nextcloud Konfiguration ############################## #Name der Nextcloud NEXTCLOUD="nextcloud" # E-Mail Adress an die der Status gesendet werden soll EMAIL="email@adresse.de" ############################## #BorgBackup Passphrase ############################## # Das Passwort wird benötigt, wenn BorgBackup automatisch über ein Script ausgeführt werden soll # Zum Schutz sollte deshalb das BorgBackup-Skript noch besonders geschützt werden # sudo chown root:root # sudo chmod 0600 export BORG_PASSPHRASE="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ############################## #Mount the NFS share where the backup should be saved to ############################## # Der Pfad muss bereits manuell mit "sudo mkdir" angelegt worden sein # In der /etc/fstab wurde der Mount Point nicht gesetzt, weshalb das Skript diesen beim ausfuehren automatisch einbindet sudo mount 192.168.178.3:Nextcloud-Backup /mnt/openmediavault ################################################################################################### repopfad="$zielpfad"/"$repository" # check for root if [ $(id -u) -ne 0 ] && [ "$rootuser" == "ja" ]; then echo "Sicherung muss als Root-User ausgeführt werden." exit 1 fi # Init borg-repo if absent if [ ! -d $repopfad ]; then borg init --encryption=$verschluesselung $repopfad echo "Borg-Repository erzeugt unter $repopfad" fi # backup data SECONDS=0 echo "Start der Sicherung $(date)." borg create --compression $kompression --exclude-caches \ --exclude '/mnt/data/*/cache' \ --exclude '/mnt/data/*/files_trashbin' \ --exclude '/mnt/data/*/upload' \ --one-file-system -v --stats --progress \ $repopfad::'{hostname}-{now:%Y-%m-%d-%H%M%S}' $sicherung echo "Ende der Sicherung $(date). Dauer: $SECONDS Sekunden" | mutt ${EMAIL} -s "BorgBackup completed for "${NEXTCLOUD} # prune archives borg prune -v --list $repopfad --prefix '{hostname}-' $pruning ############################## # Unmounts the NFS share ############################## sudo umount /mnt/openmediavault ################################### # 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) " - BorgBackup completed for "${NEXTCLOUD} | mutt ${EMAIL} -a ${LOGFILE} -s "BorgBackup completed for "${NEXTCLOUD}
Das Einbinden des openmediavault-Laufwerks wird durch das Skript automatisch durchgeführt. Ihr müsst jedoch darauf achten, dass der hier angegebenen Ordner auf dem Nextcloud-Server bereits vorhanden ist! Den Ordner legt ihr sonst mit dem Befehlt an:
sudo mkdir /mnt/openmediavault
Das Skript enthält die BorgBackup-Passphrase die besonders zu schützen ist, damit unbefugte Dritte nicht auf die Datensicherung zugreifen können. Deshalb ist die Datei noch gesondert zu sichern.
cd /etc/skripte sudo chown root:root sudo chmod 0600
Das Skript kann anschließend manuell gestartet werden:
sudo ./borgbackup-nextcloud-data.sh
Weiterführende BorgBackup Links
- borgbackup.readthedocs.io – Offizielle Borg Webseite
- BorgBackup Documentation
- https://github.com/borgbackup – BorgBackup auf github.com

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.