Skip to content

Instantly share code, notes, and snippets.

@levifig
Forked from tdtgit/rclone_backup.sh
Last active July 30, 2021 00:11
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save levifig/ff659060528e9543a7fa1a37fe457d7f to your computer and use it in GitHub Desktop.
Rclone VPS Backup Script
#!/bin/bash
#v=1.1
TIMESTAMP=$(date +"%F-%H-%M")
SECONDS=0
BACKUP_DIR="/root/backup/$TIMESTAMP"
MYSQL=/usr/bin/mysql
MYSQL_USER=root
MYSQL_PASSWORD=YOURMYSQLPASSWORDHERE
MYSQLDUMP=/usr/bin/mysqldump
################# MySQL Backup #################
mkdir -p "$BACKUP_DIR/mysql"
echo "Starting MySQL Backup";
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/mysql/$db.gz"
done
/usr/bin/rclone move $BACKUP_DIR "remote:$TIMESTAMP" >> /var/log/rclone.log 2>&1
rm -rf $BACKUP_DIR/*
echo "Finished MySQL Backup";
echo '-------------------------------------';
################# Website Backup #################
echo "Starting /var/www backup";
for D in /var/www/*; do
if [ -d "${D}" ]; then
domain=${D##*/}
echo "-- Backing up "$domain;
zip -r $BACKUP_DIR/$domain.zip /var/www/$domain/* -q
/usr/bin/rclone move $BACKUP_DIR "remote:$TIMESTAMP/www/" >> /var/log/rclone.log 2>&1
rm -rf $BACKUP_DIR/*
echo "-- Done backing up "$domain;
fi
done
echo "Finished /var/www backup";
echo '-------------------------------------';
################# Nginx Configuration Backup #################
echo "Starting /etc/nginx backup";
cp -r /etc/nginx/ $BACKUP_DIR/nginx/
/usr/bin/rclone move -L $BACKUP_DIR "remote:$TIMESTAMP" >> /var/log/rclone.log 2>&1
echo "Finished /etc/nginx backup";
echo '-------------------------------------';
#/usr/bin/rclone -q --min-age 6m delete "remote:" #Remove all backups older than 2 week
#/usr/bin/rclone -q --min-age 6m rmdirs "remote:" #Remove all empty folders older than 2 week
rm -rf /root/backup/*
duration=$SECONDS
echo "$(($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