本文假设我们已经利用 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点执行
评论