使用 Rclone 实现 MariaDB 数据库自动备份至 Google Drive
数据是无价的,而服务器的硬盘往往是不可靠或有限的。为了确保数据库安全并节省本地空间,最优雅的方案莫过于将备份自动同步到云端。本文将手把手教你如何利用 Rclone 打造一套从配置到授权、再到脚本自动化的全流程备份系统。
1. 为什么选择 Rclone?
Rclone 被称为“云端存储的瑞士军刀”。它支持超过 40 种云存储(如 Google Drive, OneDrive, Dropbox),并能像操作本地文件一样同步数据。
2. 避坑指南:服务账号 vs 个人授权
在配置 Google Drive 时,新手最常遇到的报错是 403: Service Accounts do not have storage quota。
- 原因:服务账号(JSON)默认存储空间为 0GB。
- 对策:个人开发者建议使用 OAuth2 授权模式。这样备份将直接占用你个人账号的 15GB 免费空间,配置更简单且无配额限制。
3. 核心配置流程
第一步:服务器端初始化
在服务器上运行:
rclone config
- 输入
n新建远程连接,命名为gdrive。 - 选择
Google Drive。 client_id和client_secret:直接回车跳过。scope:输入1(Full access)。service_account_file:留空(直接回车)。Edit advanced config?:输入n。Use auto config?:输入n(因为服务器没有浏览器)。
此时,服务器会显示一行命令,例如:rclone authorize "drive" "eyJz..."。请保持这个窗口不要关闭。
第二步:本地电脑获取授权 (核心环节)
由于服务器无法弹出浏览器,我们需要在自己的电脑(Windows 或 Mac)上完成登录。
1. 准备本地工具
- 下载:前往 Rclone 官网 下载对应系统的 ZIP 包。
- 解压:解压到桌面,例如文件夹名为
rclone。
2. 运行授权命令
- Windows:在解压文件夹内,按住
Shift+ 右键,选择“在此处打开 PowerShell”。 - Mac/Linux:打开终端并进入该目录。
输入服务器给你的那行代码:
# 格式为:./rclone.exe authorize "存储类型" "服务器给的代码"
./rclone.exe authorize "drive" "服务器给的代码"
3. 浏览器登录
- 运行命令后,本地发动机会自动打开浏览器,跳转到 Google 登录页。
- 登录你的
Gmail账号,并在授权页面点击 “允许 (Allow)”。 - 浏览器显示 “Success!” 后,返回你的本地终端。
4. 复制 Token
你会看到一段以 {"access_token": ...} 开头的长代码。完整复制这段代码,回到服务器粘贴进去。
第三步:编写自动化备份脚本
创建一个名为 /root/backup_db.sh 的脚本:
#!/bin/bash
# --- 配置区 ---
DB_USER="root"
DB_PASS="你的数据库密码"
LOCAL_DIR="/root/db_backups"
REMOTE_NAME="gdrive"
REMOTE_FOLDER="backup" # 对应谷歌硬盘中的目录名
DATE=$(date +%Y%m%d_%H%M)
FILE_NAME="db_backup_$DATE.sql.gz"
# 1. 导出并压缩
mkdir -p $LOCAL_DIR
mysqldump -u$DB_USER -p$DB_PASS --all-databases | gzip > $LOCAL_DIR/$FILE_NAME
# 2. 上传至云端
# 如果你使用的是共享文件夹,请在末尾加上 --drive-shared-with-me
rclone copy $LOCAL_DIR/$FILE_NAME $REMOTE_NAME:$REMOTE_FOLDER -P
# 3. 清理 7 天前的本地旧备份
find $LOCAL_DIR -mtime +7 -type f -delete
echo "✅ 备份任务于 $DATE 完成!"
第四步:设置 Cron 定时任务
让脚本在每天凌晨 3:00 自动执行:
crontab -e
添加以下行:
0 3 * * * /bin/bash /root/backup_db.sh > /dev/null 2>&1
4. 常见问题排查
- Token 过期:授权代码有时效性,如果复制太慢会报错,重新获取即可。
- 权限不足:确保备份脚本有执行权限:
chmod +x /root/backup_db.sh。 - 找不到文件夹:如果在 Rclone 列表里看不到别人分享给你的文件夹,请在配置时开启高级设置里的
shared_with_me。
5. 总结
通过 Rclone 本地授权配合服务器端的定时任务,我们建立了一套稳健的异地备份机制。这套系统不仅适用于数据库,也适用于备份网站源码、日志等任何重要文件。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 asher
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

