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!)

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

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 "" \
          -o message-file="/tmp/dfInfo"

    umount /mnt/backup-disk
    exit 0
else
    # Überpü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
    #rsync -av --exclude '*@SynoResource' --exclude '@eaDir' \
    --exclude '*.vsmeta' --exclude '.DS_Store' --exclude 'Thumbs.db' \
    /mnt/blackSERV/ \
    /mnt/backup-disk/server-backups/
    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
    ################################################################################################
    ##
fi

umount /mnt/backup-disk

  • skripting-section/bash/synology-backup-skript.1515418082.txt.gz
  • Last modified: 2018/01/08 14:40
  • (external edit)