#!/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