Rsnapshot Remote Backup Script

  Tools
#!/bin/bash
# IPSERVERONE Rsnapshot Remote Backup - 2017-11-02 02:40:42

CLIENT="XX" # server name
CLIENT_SERVER_NAME="$CLIENT.small-dns.com" # server full name

NOTIFY_EMAIL="khairul@ipserverone.com, support@ipserverone.com" # recipient emails
BACKUP_SERVER_IP="XX" # backup server public ip address (WAN)

# Telegram Bot Token and Group ID
TELEGRAM_TOKEN="391514041:AAEvDNkJE5kVbD8upwq3gHvyUV6NbaRP5rk"
TELEGRAM_GROUP="-173985167"

START_TIME=`date "+%F %T"`
END_TIME=`date "+%F %T"`

# verify if backup process runnning
if [ -f /home/$CLIENT/rsnapshot.pid ]; then

  # send notification to telegram if previous backup still running
  /usr/bin/curl -s -X POST https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage -d chat_id=$TELEGRAM_GROUP -d text="Backup Failed (Previous backup job still running) : $CLIENT_SERVER_NAME"

  echo "Backup Failed (Previous backup job still running)" | mail -s "Backup Failed (Previous backup job still running) : $CLIENT_SERVER_NAME" $NOTIFY_EMAIL

  exit 0

fi

# backup process start
echo "" > /home/$CLIENT/rsnapshot.log

echo $START_TIME > /home/$CLIENT/start.time

/usr/local/bin/rsnapshot -c /home/$CLIENT/$CLIENT.conf sync

RESULT=`cat /home/$CLIENT/rsnapshot.log`

if [[ $RESULT == *"completed successfully"* ]] || [[ $RESULT == *"sync: completed" ]] || [[ $RESULT == *"code 23"* ]] || [[ $RESULT == *"code 24"* ]]

  then

    EXIT_CODE=1
    EXIT_STATUS="Succeeded"

    /usr/local/bin/rsnapshot -c /home/$CLIENT/$CLIENT.conf daily

    echo $END_TIME > /home/$CLIENT/end.time

  else

    EXIT_CODE=2
    EXIT_STATUS="Failed"

    echo $END_TIME > /home/$CLIENT/end.time

    # send notification to telegram if backup failed
    /usr/bin/curl -s -X POST https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage -d chat_id=$TELEGRAM_GROUP -d text="Backup Status $EXIT_STATUS : $CLIENT_SERVER_NAME"

    # send notification to email if backup failed
    echo -e "Backup Start Time : `cat /home/$CLIENT/start.time`" > /home/$CLIENT/mail.tmp
    echo -e "Backup End Time : `cat /home/$CLIENT/end.time`\n" >> /home/$CLIENT/mail.tmp
    echo -e "Backup Source : $CLIENT" >> /home/$CLIENT/mail.tmp
    echo -e "Backup Destination : $BACKUP_SERVER_IP" >> /home/$CLIENT/mail.tmp
    echo -e "Backup Task : Completed"  >> /home/$CLIENT/mail.tmp
    echo -e "Backup Status : $EXIT_STATUS"  >> /home/$CLIENT/mail.tmp

    cat /home/$CLIENT/mail.tmp |mail -s "Backup $EXIT_STATUS : $CLIENT_SERVER_NAME" $NOTIFY_EMAIL

fi

# update backup status to portal.ipfusions.com
/usr/bin/curl --insecure --data \
"bs_backup_category=1&bs_server_name=$CLIENT_SERVER_NAME&bs_backup_server_ip=$BACKUP_SERVER_IP&bs_backup_status=$EXIT_CODE" \
https://portal.ipfusions.com/backup_api

rm -f /home/$CLIENT/start.time /home/$CLIENT/end.time /home/$CLIENT/mail.tmp

exit 0