Advertisement
cha0skvlt

Backup Bash

Apr 20th, 2016
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.46 KB | None | 0 0
  1. #!/bin/bash
  2. #backup script by Tomashkov Evgeniy
  3.  
  4. USER=""         #mysql username
  5. PASSWORD=""  #mysql pass
  6.  
  7. BACKUP=     #backup dir
  8. OLD=30      #backups lifetime
  9. PREFIX=     #hostname
  10. DATE=`date '+%Y-%m-%d'`
  11.  
  12. FILE1=$BACKUP/$DATE-sql-$PREFIX.tar.gz
  13. FILE2=$BACKUP/$DATE-files-$PREFIX.tar.gz
  14. LOG=0
  15.  
  16. #--------------------------------------------------------------------------------------------------------
  17. #Send message in Telegram
  18.  
  19. BOT_TOKEN=
  20. CHAT_ID= #target user chat_id
  21. MESSAGE=""
  22.  
  23. function sendNotification()
  24. {
  25.     /usr/bin/wget --tries=3 --timeout=5 -O /dev/null  \
  26.     "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage?chat_id=${CHAT_ID}&text=${MESSAGE}"
  27. }
  28.  
  29. #-------------------------------------------------------------------------------------------------------
  30. #Mysql dumping and backup
  31.  
  32. function mysqlDump()
  33. {
  34.     mkdir $BACKUP/$DATE.sql
  35.     cd $BACKUP/$DATE.sql
  36.     for i in `mysql -u $USER -p$PASSWORD -e'show databases;' | grep -v information_schema | grep -v Database`;
  37.             do /usr/bin/mysqldump -u $USER -p$PASSWORD $i > $DATE-$i.sql
  38. done
  39.  
  40. cd ..
  41.     tar -czf $BACKUP/$DATE-sql-$PREFIX.tar.gz ./$DATE.sql
  42.     rm -rf ./$DATE.sql
  43. }
  44.  
  45. #--------------------------------------------------------------------------------------------------------
  46. #Filesystem backup
  47.  
  48. function filesBackup()
  49. {
  50. tar -czf $BACKUP/$DATE-files-$PREFIX.tar.gz  \
  51.     /root/ \
  52.     /var/www/ \
  53.     /etc/ \
  54.     /var/log/ \
  55.     --exclude=$BACKUP
  56. }
  57.  
  58. #-------------------------------------------------------------------------------------------------------
  59. #File check, logging and notification
  60.  
  61. function checkFiles()
  62. {
  63. if [ -f $FILE1 ] && [ -f $FILE2 ]
  64.         then
  65.         LOG=$[LOG+1]
  66. fi
  67.  
  68. if [ -s $FILE1 ] && [ -s $FILE2 ]
  69.         then
  70.         LOG=$[LOG+1]
  71. fi
  72.  
  73. if [ "$LOG" -eq "2" ]
  74.     then
  75.         echo "$DATE Backup [OK] Total size: $(du -h $BACKUP | awk '{print $1}')" >> /var/log/backup_vds.log && \
  76.         MESSAGE=$(echo "Warpgate weekly backup [OK]")
  77.     else
  78.         exec 2 >> /var/log/backup_vds.log && \
  79.         echo "$DATE Backup [FAIL]"  >> /var/log/backup_vds.log  && \
  80.         MESSAGE=$(echo "Warpgate weekly backup [FAIL]")
  81. fi
  82. }
  83.  
  84. #--------------------------------------------------------------------------------------------------------
  85. #Old backups delete
  86.  
  87. function oldDel()
  88. {
  89.     find $BACKUP -mtime +$OLD -exec rm '{}' \;
  90. }
  91.  
  92. #--------------------------------------------------------------------------------------------------------
  93. #Workflow
  94.  
  95. mysqlDump && filesBackup && checkFiles && sendNotification && oldDel
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement