skripting-section:bash:synology-backup-skript

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
skripting-section:bash:synology-backup-skript [2018/01/05 12:36] – created michaelskripting-section:bash:synology-backup-skript [2018/09/25 11:15] (current) michael
Line 1: Line 1:
-====== Synology Backup Skript ======+====== Synology Storage 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, 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!)
  
Line 9: Line 9:
 #!/bin/bash #!/bin/bash
 ############################################################################################# #############################################################################################
-#******************* Backup blackSERV Script by Michael Reber - v 1.**********************#+#******************* Backup blackSERV Script by Michael Reber - v 1.**********************#
 ############################################################################################# #############################################################################################
- +
 ############################################################################################# #############################################################################################
 ## Variable Definition & System Vorbereitungen: ## Variable Definition & System Vorbereitungen:
 today=`date +"%Y-%m-%d"` today=`date +"%Y-%m-%d"`
 OLDBACKUP=`date -d "7 days ago" +"%Y-%m-%d"` OLDBACKUP=`date -d "7 days ago" +"%Y-%m-%d"`
- +
 ## System dependency Check: ## System dependency Check:
 if [ -n "$(command -v apt-get)" ]; then if [ -n "$(command -v apt-get)" ]; then
Line 35: Line 35:
 fi fi
 ################################################################################################ ################################################################################################
-## Mount und bereitstellen der Backup-Disk: 
-mount /dev/sda1 /mnt/backup-disk 
  
-if [ ! -d "/mnt/backup-disk/daten_michael" ]; then +## Aktivieren des Stroms der Backup-Festplatte und bereitstellen des Mounts
-    mkdir /mnt/backup-disk/daten_michael +uhubctl -a on -p 3 && mount /dev/sda1 /mnt/backup-disk
-    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: +Überprüfen, ob die für das Backup benötigte Disk (sda1) noch mindestens 50GB freien Speicher hat. 
-mount -t nfs -o ro,hard 192.168.1.21:/volume1/daten_michael /mnt/blackSERV 2>> /var/log/blackSERV-backup.log +if [ "$(df | grep -oP '/sda1.* \K\d+(?=\s+\d+%)')" -lt "50000000" ] # 50000000 = 50GB 
-rsync -av --exclude '*@SynoResource' --exclude '@eaDir' +then 
---exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db' +    echo "ERRORDisk has less than 50GB free space!" 
-/mnt/blackSERV/3_Dokumente /mnt/blackSERV/4_Medien /mnt/blackSERV/5_Development /mnt/blackSERV/6_KnowHow  +    df -h > /tmp/dfInfo 
-/mnt/backup-disk/daten_michael/ +    sendemail -f "mail.blackgate@gmail.com"   \ 
-umount /mnt/blackSERV+          -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"
  
-#Create Backup of server_backups+    umount /mnt/backup-disk && uhubctl -a off -p 3 
-mount -t nfs -o ro,hard 192.168.1.21:/volume1/server-backups /mnt/blackSERV 2>> /var/log/blackSERV-backup.log +    exit 1 
-#rsync -av --exclude '*@SynoResource' --exclude '@eaDir' \ +else 
---exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db'+    Überprüfen, ob die für das Backup benötigten Ordner vorhanden sind; anderfalls sollen sie erstellt werden
-/mnt/blackSERV\ +    if [ ! -d "/mnt/backup-disk/daten_michael" ]; then 
-/mnt/backup-disk/server-backups/ +        mkdir /mnt/backup-disk/daten_michael 
-umount /mnt/blackSERV +        echo "$today - Creating new backup-topdir: 'daten_michael'.." >> /var/log/blackSERV-backup.log 
-  +    fi 
-#Create Backup of web: +    if [ ! -d "/mnt/backup-disk/server_backups" ]; then 
-mount -t nfs -o ro,hard 192.168.1.21:/volume1/web /mnt/blackSERV 2>> /var/log/blackSERV-backup.log +        mkdir /mnt/backup-disk/server_backups 
-rsync -av --exclude '*@SynoResource' --exclude '@eaDir' \ +        echo "$today Creating new backup-topdir: 'server_backups'..>> /var/log/blackSERV-backup.log 
---exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db'+    fi 
-/mnt/blackSERV\ +    if [ ! -d "/mnt/backup-disk/web" ]; then 
-/mnt/backup-disk/web+        mkdir /mnt/backup-disk/web 
-umount /mnt/blackSERV  +        echo "$today Creating new backup-topdir: 'web'..>> /var/log/blackSERV-backup.log 
-  +    fi 
-#Create Backup of znextCloud: +    if [ ! -d "/mnt/backup-disk/znextCloud" ]; then 
-mount -t nfs -o ro,hard 192.168.1.21:/volume1/znextCloud /mnt/blackSERV 2>> /var/log/blackSERV-backup.log +        mkdir /mnt/backup-disk/znextCloud 
-rsync -av --exclude '*@SynoResource' --exclude '@eaDir' \ +        echo "$today - Creating new backup-topdir: 'znextCloud'.." >> /var/log/blackSERV-backup.log 
---exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db'+    fi 
-/mnt/blackSERV\ +    ################################################################################################ 
-/mnt/backup-disk/znextCloud/ +    ## Start des täglichen blackSERV-Backups:
-umount /mnt/blackSERV  +
  
-  +    #Create Backup of daten_michael: 
-################################################################################################ +    #**************************************************************** 
-## Löschen von 7 Tage alten Backups+    mount -t nfs -o ro,hard 192.168.1.21:/volume1/daten_michael /mnt/blackSERV 2>> /var/log/blackSERV-backup.log 
-#if [ -d "/mnt/server-backup/$backupdir/$OLDBACKUP" ]; then +    rsync -av --exclude '*@SynoResource' --exclude '@eaDir'
-#    rm -fR /mnt/server-backup/$backupdir/$OLDBACKUP +    --exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db' --exclude 'Video2Brain_'
-#fi +    /mnt/blackSERV/3_Dokumente /mnt/blackSERV/4_Medien /mnt/blackSERV/5_Development /mnt/blackSERV/6_KnowHow 
-################################################################################################ +    /mnt/backup-disk/daten_michael/ 
-## +    umount /mnt/blackSERV 
-umount /mnt/backup-disk+ 
 +    #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 
 +    ## Dinamic backup for all Server Systems in path
 +    for serverBackupPath in `find /mnt/blackSERV/* -prune -type d
 +    do 
 +        serverBackupFolder=$(echo $serverBackupPath | cut -d '/' -f4) 
 +        rsync -av --exclude '*@SynoResource' --exclude '@eaDir'
 +        --exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db'
 +        $serverBackupPath/$today/
 +        /mnt/backup-disk/server_backups/$serverBackupFolder/ 
 +    done 
 +    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 
 + 
 +    echo "$today -> Tägliche Sicherung erfolgreich abgeschlossen!" >> /var/log/blackSERV-backup.log 
 +fi 
 + 
 +umount /mnt/backup-disk && uhubctl -a off -p 3
 </sxh> </sxh>
  • skripting-section/bash/synology-backup-skript.1515152189.txt.gz
  • Last modified: 2018/01/05 12:36
  • by michael