This is an old revision of the document!
Synology Backup Skript
Skript, welches vom mir erstellt wurde, um automatisiert wichtige Daten von meinem Synology NAS, auf eine externe Harddisk welche an meinem Backup-Server angeschlossen ist zu sichern! (Die HDD wird nur aktiv für die Zeit der Sicherung!)
Skript Sourcecode
Filename: blackserv_backup_script.sh
#!/bin/bash ############################################################################################# #******************* Backup blackSERV Script by Michael Reber - v 1.2 **********************# ############################################################################################# ############################################################################################# ## Variable Definition & System Vorbereitungen: today=`date +"%Y-%m-%d"` OLDBACKUP=`date -d "7 days ago" +"%Y-%m-%d"` ## System dependency Check: if [ -n "$(command -v apt-get)" ]; then if [ $(dpkg-query -W -f='${Status}' nfs-common 2>/dev/null | grep -c "ok installed") -eq 0 ]; then apt-get install nfs-common -y; fi else if [ $(yum -q list installed nfs-utils &>/dev/null && echo "1" || echo "0") -eq 0 ]; then yum install nfs-utils -y; systemctl start rpcbind && systemctl enable rpcbind; fi fi if [ ! -d "/mnt/backup-disk" ]; then mkdir /mnt/backup-disk fi if [ ! -d "/mnt/blackSERV" ]; then mkdir /mnt/blackSERV fi ################################################################################################ ## Mount und bereitstellen der Backup-Disk: mount /dev/sda1 /mnt/backup-disk # Überprüfen, ob die für das Backup benötigte Disk (sda1) noch mindestens 50GB freien Speicher hat. if [ "$(df | grep -oP '/sda1.* \K\d+(?=\s+\d+%)')" -lt "50000000" ] # 50000000 = 50GB then echo "ERROR: Disk has less than 50GB free space!" df -h > /tmp/dfInfo sendemail -f "mail.blackgate@gmail.com" \ -u "ERROR: Disk on `hostname` has less than 50GB free space!" \ -t "michael.r467@gmail.com" \ -s "smtp.gmail.com:587" \ -o tls=yes \ -xu "mail.blackgate@gmail.com" \ -xp "PASSWORD" \ -o message-file="/tmp/dfInfo" umount /mnt/backup-disk exit 0 else # Überprüfen, ob die für das Backup benötigten Ordner vorhanden sind; anderfalls sollen sie erstellt werden: if [ ! -d "/mnt/backup-disk/daten_michael" ]; then mkdir /mnt/backup-disk/daten_michael echo "$today - Creating new backup-topdir: 'daten_michael'.." >> /var/log/blackSERV-backup.log fi if [ ! -d "/mnt/backup-disk/server_backups" ]; then mkdir /mnt/backup-disk/server_backups echo "$today - Creating new backup-topdir: 'server_backups'.." >> /var/log/blackSERV-backup.log fi if [ ! -d "/mnt/backup-disk/web" ]; then mkdir /mnt/backup-disk/web echo "$today - Creating new backup-topdir: 'web'.." >> /var/log/blackSERV-backup.log fi if [ ! -d "/mnt/backup-disk/znextCloud" ]; then mkdir /mnt/backup-disk/znextCloud echo "$today - Creating new backup-topdir: 'znextCloud'.." >> /var/log/blackSERV-backup.log fi ################################################################################################ ## Start des täglichen blackSERV-Backups: #echo "$today - Starting with backup of server: $backupdir .." >> /var/log/blackSERV-backup.log #Create Backup of daten_michael: #**************************************************************** mount -t nfs -o ro,hard 192.168.1.21:/volume1/daten_michael /mnt/blackSERV 2>> /var/log/blackSERV-backup.log rsync -av --exclude '*@SynoResource' --exclude '@eaDir' \ --exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db' --exclude 'Video2Brain_' \ /mnt/blackSERV/3_Dokumente /mnt/blackSERV/4_Medien /mnt/blackSERV/5_Development /mnt/blackSERV/6_KnowHow \ /mnt/backup-disk/daten_michael/ umount /mnt/blackSERV #Create Backup of server_backups: #**************************************************************** mount -t nfs -o ro,hard 192.168.1.21:/volume1/server-backups /mnt/blackSERV 2>> /var/log/blackSERV-backup.log ## Backup Proxy-Files rsync -av --exclude '*@SynoResource' --exclude '@eaDir' \ --exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db' \ /mnt/blackSERV/blackNET-proxy/$today/ \ /mnt/backup-disk/server_backups/blackNET-proxy/ ## Backup Wiki-Files rsync -av --exclude '*@SynoResource' --exclude '@eaDir' \ --exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db' \ /mnt/blackSERV/wiki-server-v2.blackNET/$today/ \ /mnt/backup-disk/server_backups/wiki-server-v2.blackNET/ ## Backup PlexDash-Files rsync -av --exclude '*@SynoResource' --exclude '@eaDir' \ --exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db' \ /mnt/blackSERV/plexdash.com/$today/ \ /mnt/backup-disk/server_backups/plexdash.com/ umount /mnt/blackSERV #Create Backup of web: #**************************************************************** mount -t nfs -o ro,hard 192.168.1.21:/volume1/web /mnt/blackSERV 2>> /var/log/blackSERV-backup.log rsync -av --exclude '*@SynoResource' --exclude '@eaDir' \ --exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db' \ /mnt/blackSERV/ \ /mnt/backup-disk/web/ umount /mnt/blackSERV #Create Backup of znextCloud: #**************************************************************** mount -t nfs -o ro,hard 192.168.1.21:/volume1/znextCloud /mnt/blackSERV 2>> /var/log/blackSERV-backup.log rsync -av --exclude '*@SynoResource' --exclude '@eaDir' \ --exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db' \ /mnt/blackSERV/ \ /mnt/backup-disk/znextCloud/ umount /mnt/blackSERV ################################################################################################ ## Löschen von 7 Tage alten Backups: #if [ -d "/mnt/server-backup/$backupdir/$OLDBACKUP" ]; then # rm -fR /mnt/server-backup/$backupdir/$OLDBACKUP #fi ################################################################################################ ## echo "$today -> Tägliche Sicherung erfolgreich abgeschlossen!" >> /var/log/blackSERV-backup.log fi umount /mnt/backup-disk