Die effizienteste Backup Lösung für NEXTCLOUD – Datensicherung mit BorgBackup

Sie sehen gerade einen Platzhalterinhalt von Standard. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Ein ordentliches Backup ist für eine jeden Nextcloud User ein Muss. Mit die effizienteste Backup Lösung für eine Nextcloud ist aktuell die Anwendung BorgBackup, welche verschlüsselte, komprimierte und inkrementelle Backups bietet.

» Relevante Videos:
Nextcloud Backup Skript V1: https://www.youtube.com/watch?v=_uB9pdnn-gs
Nextcloud Backup App: https://www.youtube.com/watch?v=oB10NfuTZCs
Nextcloud auf Linux Server installieren: https://youtu.be/8Hw7M7tcI9o
Nextcloud Playlist: https://www.youtube.com/watch?v=mlRAaZT53Rg&list=PLLg1WgOBYXOtQOwYQjJc1GbuYz-wJgmtN

 

Im Video verwendete Befehle:

##### Nextcloud Borg Backup #####

## mount NAS and create directories ##
mkdir -p /backup/daten /backup/temp /restore

## install borg backup ##
apt install -y borgbackup

## create now Backup Repository ##
borg init -e repokey-blake2 /backup/daten/

## adjust backup skript und paste ##
nano /root/backup.sh

## make executable ##
chmod +x /root/backup.sh

## automate skript at 03:00 ## 
crontab -e
0 3 * * * /root/backup.sh > /dev/null 2>&1

## list created backups ##
borg list /backup/daten

## mount backup to browse it ##
borg mount /backup/daten::<date> /restore/

example: borg mount /backup/daten::20200602_084033 /restore/

## unmount the backup ##
borg umount /restore/

Skript:

#!/bin/bash
##################################
### Beispieldaten:
### logDirectory="/backup_logs/"
### backupDiscMount="/backup/"
### localBackupDir="/backup/temp"
##################################
export BORG_PASSPHRASE='<borg-password>'
export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes
export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes
startTime=$(date +%s)
currentDate=$(date --date @"$startTime" +"%Y%m%d_%H%M%S")
currentDateReadable=$(date --date @"$startTime" +"%d.%m.%Y - %H:%M:%S")
logDirectory="/var/log/"
logFile="${logDirectory}/${currentDate}.log"
backupDiscMount="/backup/daten/"
localBackupDir="/backup/temp"
borgRepository="${backupDiscMount}/"
borgBackupDirs="/home/data/ /var/www/nextcloud/ $localBackupDir/"
nextcloudFileDir='/var/www/nextcloud'
webserverServiceName='apache2'
webserverUser='www-data'
nextcloudDatabase='nextcloud'
dbUser='root'
dbPassword='<db-password>'
fileNameBackupDb='nextcloud-db.sql'
if [ ! -d "${logDirectory}" ]
then
    mkdir -p "${logDirectory}"
fi
errorecho() { cat <<< "$@" 1>&2; }
exec > >(tee -i "${logFile}")
exec 2>&1
if [ "$(id -u)" != "0" ]
then
    errorecho "ERROR: This script has to be run as root!"
    exit 1
fi
if [ ! -d "${localBackupDir}" ]
then
    errorecho "ERROR: The local backup directory ${localBackupDir} does not exist!"
    exit 1
fi
echo -e "\n###### Start des Backups: ${currentDateReadable} ######\n"
echo -e "Daten werden zusammengestellt"
dpkg --get-selections > "${localBackupDir}/software.list"
sudo -u "${webserverUser}" php ${nextcloudFileDir}/occ maintenance:mode --on
echo "apache2 wird gestoppt"
systemctl stop "${webserverServiceName}"
echo "Datenbanksicherung wird erstellt"
mysqldump --single-transaction --routines -h localhost -u "${dbUser}" -p"${dbPassword}" "${nextcloudDatabase}" > "${localBackupDir}/${fileNameBackupDb}"
echo -e "\nBackup mit borgbackup"
borg create --stats \
    $borgRepository::"${currentDate}" \
    $localBackupDir \
    $borgBackupDirs 
echo
echo "webserver wird gestartet"
systemctl start "${webserverServiceName}"
sudo -u "${webserverUser}" php ${nextcloudFileDir}/occ maintenance:mode --off
rm "${localBackupDir}"/software.list
rm -r "${localBackupDir}/${fileNameBackupDb}"
borg prune --progress --stats $borgRepository --keep-within=7d --keep-weekly=4 --keep-monthly=6
endTime=$(date +%s)
endDateReadable=$(date --date @"$endTime" +"%d.%m.%Y - %H:%M:%S")
duration=$((endTime-startTime))
durationSec=$((duration % 60))
durationMin=$(((duration / 60) % 60))
durationHour=$((duration / 3600))
durationReadable=$(printf "%02d Stunden %02d Minuten %02d Sekunden" $durationHour $durationMin $durationSec)
echo -e "\n###### Ende des Backups: ${endDateReadable} (${durationReadable}) ######\n"
echo -e "Plattenbelegung:\n"
df -h ${backupDiscMount}

 

» Quellen & Credits:
https://www.c-rieger.de/backup-mit-de-duplizierung/
https://www.reddit.com/r/HomeServer/comments/kl2du2/offsite_nextcloud_backup_using_borgduplicatirsync/

apfelcast Support

Du benötigst Unterstützung bei deinem Projekt oder hast Fragen zur Umsetzung?
Dann melde ich gern bei uns!

[button link=“https://apfelcast.com/kontakt“ type=“big“ class=“ custom-button“] Kontaktieren[/button]

apfelcast Support

Du benötigst Unterstützung bei deinem Projekt oder hast Fragen zur Umsetzung?
Dann melde ich gern bei uns!

Ähnliche Beiträge