Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@duongthanhthai
Last active May 18, 2020 16:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save duongthanhthai/76fb7ae57bad07897c380df07bf98fbd to your computer and use it in GitHub Desktop.
Save duongthanhthai/76fb7ae57bad07897c380df07bf98fbd to your computer and use it in GitHub Desktop.
#!/usr/bin/bash
SERVER_NAME=Folder_Google
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/root/backup/$TIMESTAMP"
MYSQL_USER="root" #User Global Database
MYSQL_PASSWORD="Password" #Password Global database
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0
mkdir -p "$BACKUP_DIR/mysql"
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`
echo "Starting Backup Database";
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/mysql/$db.sql.gz"
done
echo "Finished";
echo '';
echo "Starting Backup Nginx Configuration";
cp -r /usr/local/nginx/conf/conf.d/ $BACKUP_DIR/nginx/
echo "Finished";
echo '';
echo "Starting Backup Website";
# Loop through /home directory
for D in /home/nginx/domains/*; do
if [ -d "${D}" ]; then #If a directory
domain=${D##*/} # Domain name
echo "- "$domain;
zip -r $BACKUP_DIR/$domain.zip /home/nginx/domains/$domain/public/ -q -x /home/nginx/domains/$domain/public/wp-content/cache/*** -q -x /home/nginx/domains/$domain/public/cache/*** #Exclude cache
fi
done
echo "Finished";
echo '';
size=$(du -sh $BACKUP_DIR | awk '{ print $1}')
echo "Starting Uploading Backup";
/usr/sbin/rclone move $BACKUP_DIR "remote:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1
# Clean up
rm -rf $BACKUP_DIR
/usr/sbin/rclone -q --min-age 1w delete "remote:$SERVER_NAME" #Remove all backups older than 1 week
/usr/sbin/rclone -q --min-age 1w rmdirs "remote:$SERVER_NAME" #Remove all empty folders older than 1 week
echo "Finished";
echo '';
duration=$SECONDS
echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment