服务器环境

系统:Debian 11 x64

下载安装gdrive

项目地址:https://github.com/prasmussen/gdrive/releases

一把梭

1
wget -qO- https://github.com/prasmussen/gdrive/releases/download/2.1.1/gdrive_2.1.1_linux_amd64.tar.gz | tar -zxf- -C /usr/bin && chmod +x /usr/bin/gdrive

后续可根据更新版本自行换最新版gdrive

使用mysqldump导出mysql数据

格式:

1
mysqldump -u$username -p$passwd $datebase > $filename.sql

注意:-u-p后面没有空格

参数 必要性 备注
$username yes MySQL用户名
$passwd no MySQL用户密码,此处可以留空,后续隐式输入
$datebase yes MySQL数据库名称
$filename yes 导出的文件名

此处为了方便后续做成脚本,密码就直接在命令行里输入了

使用mysqldump导出mysql数据并用zip压缩

使用zip压缩:

1
mysqldump -u$username -p$passwd $datebase | zip > $filename.zip

使用zip压缩+加密:

1
mysqldump -u$username -p$passwd $datebase | zip -P $zip_passwd > $filename.zip
参数 备注
$zip_passwd 设置zip压缩包密码

配置gdrive

配置环境

若经过ls确定存在gdrive文件,执行时却仍出现 -bash: gdrive: command not found

无以上问题可略过此步骤

则需补充安装环境:

1
apt install musl -y

用命令行登录gdrive

1
gdrive about

此处需先提前在Google Drive中创建一个文件夹用于存储备份文件,也可以使用现有的文件夹

1
gdrive list

输出结果:
| Id | Name | Type |
| ——– | ———- | —- |
| 文件夹Id | 文件夹名称 | dir |

创建备份脚本

1
2
mkdir sh
nano ~/sh/auto_backup.sh

我这里采用的是zip压缩+加密方式备份,如需其他配置也可自行修改

如果使用echo代替nano写入记得用echo -e 用/044代替美元符号

写入脚本

1
mysqldump -u$username -p$passwd $datebase | zip -P $zip_passwd > /root/mysql_backup/$(date +%Y%m%d_%H)_mysql.zip && gdrive upload /root/mysql_backup/$(date +%Y%m%d_%H)_mysql.zip -p $YourDirId
需要替换的参数 备注
$username MySQL用户名
$passwd MySQL用户密码,此处可以留空,后续隐式输入
$datebase MySQL数据库名称
$zip_passwd 设置zip压缩包密码
$YourDirId 上面通过gdrive list获取到的文件夹Id

$(date +%Y%m%d_%H)含义:

参数 含义
%Y
%m
%d
%H

写入后按下Ctrl+S保存,Ctrl+X退出nano

给脚本赋权

记得给脚本赋权

1
chmod +x /root/sh/auto_backup.sh

用crontab定时执行

修改crontab规则

1
crontab -e

添加此规则:

1
0 */3 * * * /root/sh/auto_backup.sh

0 */3 * * *代表每3小时执行备份一次,可根据站点需要自行修改参数