Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #backup script by Tomashkov Evgeniy
- USER="" #mysql username
- PASSWORD="" #mysql pass
- BACKUP= #backup dir
- OLD=30 #backups lifetime
- PREFIX= #hostname
- DATE=`date '+%Y-%m-%d'`
- FILE1=$BACKUP/$DATE-sql-$PREFIX.tar.gz
- FILE2=$BACKUP/$DATE-files-$PREFIX.tar.gz
- LOG=0
- #--------------------------------------------------------------------------------------------------------
- #Send message in Telegram
- BOT_TOKEN=
- CHAT_ID= #target user chat_id
- MESSAGE=""
- function sendNotification()
- {
- /usr/bin/wget --tries=3 --timeout=5 -O /dev/null \
- "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage?chat_id=${CHAT_ID}&text=${MESSAGE}"
- }
- #-------------------------------------------------------------------------------------------------------
- #Mysql dumping and backup
- function mysqlDump()
- {
- mkdir $BACKUP/$DATE.sql
- cd $BACKUP/$DATE.sql
- for i in `mysql -u $USER -p$PASSWORD -e'show databases;' | grep -v information_schema | grep -v Database`;
- do /usr/bin/mysqldump -u $USER -p$PASSWORD $i > $DATE-$i.sql
- done
- cd ..
- tar -czf $BACKUP/$DATE-sql-$PREFIX.tar.gz ./$DATE.sql
- rm -rf ./$DATE.sql
- }
- #--------------------------------------------------------------------------------------------------------
- #Filesystem backup
- function filesBackup()
- {
- tar -czf $BACKUP/$DATE-files-$PREFIX.tar.gz \
- /root/ \
- /var/www/ \
- /etc/ \
- /var/log/ \
- --exclude=$BACKUP
- }
- #-------------------------------------------------------------------------------------------------------
- #File check, logging and notification
- function checkFiles()
- {
- if [ -f $FILE1 ] && [ -f $FILE2 ]
- then
- LOG=$[LOG+1]
- fi
- if [ -s $FILE1 ] && [ -s $FILE2 ]
- then
- LOG=$[LOG+1]
- fi
- if [ "$LOG" -eq "2" ]
- then
- echo "$DATE Backup [OK] Total size: $(du -h $BACKUP | awk '{print $1}')" >> /var/log/backup_vds.log && \
- MESSAGE=$(echo "Warpgate weekly backup [OK]")
- else
- exec 2 >> /var/log/backup_vds.log && \
- echo "$DATE Backup [FAIL]" >> /var/log/backup_vds.log && \
- MESSAGE=$(echo "Warpgate weekly backup [FAIL]")
- fi
- }
- #--------------------------------------------------------------------------------------------------------
- #Old backups delete
- function oldDel()
- {
- find $BACKUP -mtime +$OLD -exec rm '{}' \;
- }
- #--------------------------------------------------------------------------------------------------------
- #Workflow
- mysqlDump && filesBackup && checkFiles && sendNotification && oldDel
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement