Advertisement
kazeuraki

Rclone Backup Auto Delete

Nov 29th, 2017
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.65 KB | None | 0 0
  1. # HocVPS Script Plugin - Backup Server and Upload to Cloud
  2.  
  3. #!/bin/bash
  4.  
  5. SERVER_NAME=HOCVPS_BACKUP
  6.  
  7. TIMESTAMP=$(date +"%F")
  8. BACKUP_DIR="/root/backup/$TIMESTAMP"
  9. MYSQL=/usr/bin/mysql
  10. MYSQLDUMP=/usr/bin/mysqldump
  11. SECONDS=0
  12.  
  13. mkdir -p "$BACKUP_DIR/mysql"
  14.  
  15. echo "Starting Backup Database";
  16. databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`
  17.  
  18. for db in $databases; do
  19.     $MYSQLDUMP --force --opt --databases $db | gzip > "$BACKUP_DIR/mysql/$db.gz"
  20. done
  21. echo "Finished";
  22. echo '';
  23.  
  24. echo "Starting Backup Website";
  25. # Loop through /home directory
  26. for D in /home/*; do
  27.     if [ -d "${D}" ]; then #If a directory
  28.         domain=${D##*/} # Domain name
  29.         echo "- "$domain;
  30.         zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache
  31.     fi
  32. done
  33. echo "Finished";
  34. echo '';
  35.  
  36. echo "Starting Backup Nginx Configuration";
  37. cp -r /etc/nginx/conf.d/ $BACKUP_DIR/nginx/
  38. echo "Finished";
  39. echo '';
  40.  
  41. size=$(du -sh $BACKUP_DIR | awk '{ print $1}')
  42.  
  43. echo "Starting Uploading Backup";
  44. /usr/sbin/rclone copy $BACKUP_DIR "remote:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1
  45. mv $BACKUP_DIR /root/copybackup
  46. find /root/copybackup/ -mindepth 1 -maxdepth 1 -ctime 1 | xargs rm -rf
  47. # Clean up
  48. rm -rf $BACKUP_DIR
  49. /usr/sbin/rclone -q --min-age 2w delete "remote:$SERVER_NAME" #Remove all backups older than 2 week
  50. /usr/sbin/rclone -q --min-age 2w rmdirs "remote:$SERVER_NAME" #Remove all empty folders older than 2 week
  51. echo "Finished";
  52. echo '';
  53.  
  54. duration=$SECONDS
  55. echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement