VPS服务器网站数据库资料目录自动备份到 Google Drive 脚本

本文假设我们已经利用 Rclone将 Google Drive 挂载到服务器,然后创建一个存放备份文件的目录,利用脚本打包备份指定数据到该目录,然后移动到挂载的 Google Drive 盘,然后定时删除谷歌盘上旧的备份文件。

1. 创建脚本:webbak.sh

 1#!/bin/bash
 2WEB_DATA=/home/docker         
 3#指定要备份的网站,数据,或者目录,自行修改
 4WebBakName=Web_$(date +%Y%m%d).tar.gz  
 5#定义打包备份文件名称
 6OldWeb=Web_$(date -d -10day +"%Y%m%d").tar.gz 
 7#定义旧备份文件
 8rm -rf /home/gdpan/Web_$(date -d -1day +"%Y%m%d").tar.gz
 9#删除Google Drive 10天前的数据
10cd /root/webbak
11#进入本地备份目录
12tar zcf /root/webbak/$WebBakName $WEB_DATA
13#压缩需要备份的数据
14mv /root/webbak/$WebBakName /home/gdpan/
15#移动备份文件到你挂载的Google Drive盘,自行修改
16echo “备份结束”

chmod 777 /root/webbak.sh

2.创建:mysqlbak.sh

 1#!/bin/bash
 2#你要修改的地方从这里开始
 3MYSQL_USER=root                 #mysql用户名
 4MYSQL_PASS=xxxxxx               #mysql密码
 5#你要修改的地方从这里结束
 6#定义数据库的名字和旧数据库的名字
 7DataBakName=Data_$(date +"%Y%m%d").tar.gz
 8OldData=Data_$(date -d -2day +"%Y%m%d").tar.gz
 9#删除google drive3天前的数据
10rm -rf /root/gg-web-bak/Data_$(date -d -1day +"%Y%m%d").tar.gz
11#进入本地目录
12cd /root/webbak
13#导出数据库,一个数据库一个压缩文件
14for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
15    (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
16done
17#压缩数据库文件为一个文件
18tar zcf /root/webbak/$DataBakName /root/bak/*.sql.gz
19rm -rf /root/webbak/*.sql.gz
20
21#移动到google Drive
22mv /root/webbak/$DataBakName /root/gg-web-bak/
23echo “备份结束”
24

chmod 777 /root/mysql-bak.sh

将sh脚本放到crontab里

0 1 * * 0 /root/webbak.sh #每周日1点执行 0 2 * * 0 /root/mysqlbak.sh #每周日2点执行

版权

评论