-
-
Save levifig/ff659060528e9543a7fa1a37fe457d7f to your computer and use it in GitHub Desktop.
Rclone VPS Backup Script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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