Linux rclone全自动备份教程:一键备份网站、MySQL 数据库、Nginx 配置到雨云对象存储
作者:一位曾因手滑 rm -rf / 丢失站点的所有数据
适用环境:Linux(Ubuntu/CentOS)+ Nginx + MySQL/MariaDB + 自建博客(WordPress/Typecho/Hugo 等)
核心成果:每天凌晨自动将 网站文件、全部数据库、Nginx 配置、访问日志 加密上传至雨云对象存储,7 天前旧备份自动清理,月成本不到 1 元。
一、为什么需要“真·全量备份”?
很多站长以为“装个 WP 插件备份数据库就够了”,但真实灾难往往来自:
- 误删 Nginx 配置导致站点无法访问
- 服务器被黑后整个
/var/www被植入木马 - 数据库恢复了,但不知道当初用了什么 PHP 版本或 rewrite 规则
真正的容灾 = 网站代码 + 所有数据库 + 服务配置 + 日志记录。
本文教你用开源工具 rclone + 国产对象存储 雨云(Rainyun),一键实现全自动异地备份。
二、准备工作:开通雨云并获取 S3 密钥
环境:Ubuntu 22.04 + Nginx 1.18 + MySQL 8.0 + rclone 1.68+
那么我推荐 雨云 (邀请链接 https://www.rainyun.com/NDE5NTk1_),我目前正在使用的服务器就是雨云家的湖北十堰高防云服务器。
- 雨云 是具有IDC资质的IDC厂商,并非三无厂商
- 雨云 的湖北区域云服务具有高防能力,提供高达100G的防御。
1.访问 雨云官网 注册账号(支持支付宝)
2.进入 控制台 → 对象存储 → 创建 Bucket
- 名称示例:myblog-backup-2026
- 权限:私有
3.在 API 密钥 页面创建一对密钥:
Access Key ID(如RY1234567890ABCDEF)Secret Access Key(一长串随机字符)
雨云 S3 兼容地址为:s3.rainyun.com
三、安装并配置 rclone(连接雨云)
在服务器执行:
# Ubuntu/Debian
#更新本地软件包索引和安装rclone
sudo apt update && sudo apt install rclone -y
# CentOS/RHEL
#安装rclone
sudo yum install rclone -y
运行配置向导:
rclone config
n→ 新建 remote- 名称:
rainyun-backup - 类型:
s3 - provider:
Other - access_key_id / secret_access_key:填入雨云提供的密钥
- endpoint:
s3.rainyun.com - region:留空
- acl:
private - 之后全部默认,我们输入回车即可,来到下面的提示,我们输入
n

- 之后会出现我们的配置信息:
之后输入y 会显示如下选项,再次输入q 退出配置即可。至此我们完成Rclone配置。

测试连接:
rclone lsd rainyun-backup:
看到你的 Bucket 列表即成功。
四、关键问题解答:备份“所有数据库”用哪个密码?
❓ 问:mysqldump --all-databases 要用哪个数据库的密码?
❌ 误解:以为每个数据库有自己的密码。
✅ 真相:MySQL 中 数据库没有密码,用户才有密码。
正确做法:
root(权限最大,不推荐日常使用)- 或专门创建的
backup用户(推荐)
创建专用备份用户(安全最佳实践):
CREATE USER 'backup'@'localhost' IDENTIFIED BY '!@#2026';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER, RELOAD ON *.* TO 'backup'@'localhost';
FLUSH PRIVILEGES;
EXIT;
backup:用户名
!@#2026:用户密码
🔐 权限说明:
ON *.* 表示对所有数据库有权限
不需要 INSERT/DELETE,只读足够备份
五、安全配置:使用 .my.cnf 避免脚本暴露密码
创建凭据文件:
sudo nano /root/.my.cnf
填入(替换为你的用户名和密码):
[client]
user = backup
password = '强密码!@#2026'
host = localhost
设置安全权限(必须!):
chmod 600 /root/.my.cnf
现在,mysqldump 可通过 --defaults-file=/root/.my.cnf 安全读取凭据,无需在脚本中写密码。
六、编写全自动备份脚本(覆盖四大核心)
创建脚本:
sudo nano /root/blog-backup.sh
粘贴以下完整代码:
#!/bin/bash
# 全栈博客备份脚本 v1.0
# 备份:网站文件 + 所有数据库 + Nginx 配置 + 访问日志
# 作者:Lonelycity
# 最后更新:2026年1月
set -e
DATE=$(date +%Y%m%d-%H%M)
BACKUP_DIR="/tmp/blog_backup_$$"
BUCKET="rainyun-backup:myblog-backup-2026" # ← 替换为你的 Bucket 名
LOG_FILE="/var/log/blog-backup.log"
WEBSITE_PATH="/var/www/html"
NGINX_CONF="/etc/nginx"
NGINX_LOGS="/var/log/nginx"
mkdir -p "$BACKUP_DIR"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
log "🚀 开始全量备份..."
# 1. 网站文件
log "📦 打包网站文件..."
tar -czf "$BACKUP_DIR/website-$DATE.tar.gz" -C "$WEBSITE_PATH" .
# 2. 所有数据库(使用 .my.cnf 凭据)
log "💾 导出所有数据库..."
mysqldump --defaults-file=/root/.my.cnf --single-transaction --routines --triggers --all-databases | gzip > "$BACKUP_DIR/db-$DATE.sql.gz"
# 3. Nginx 配置
log "⚙️ 打包 Nginx 配置..."
tar -czf "$BACKUP_DIR/nginx-conf-$DATE.tar.gz" -C "$NGINX_CONF" .
# 4. Nginx 日志
log "📜 打包访问日志..."
tar -czf "$BACKUP_DIR/nginx-logs-$DATE.tar.gz" -C "$NGINX_LOGS" .
# 5. 上传到雨云
log "☁️ 上传到雨云对象存储..."
rclone copy "$BACKUP_DIR/" "$BUCKET/backups/$DATE/" --progress
# 6. 清理
rm -rf "$BACKUP_DIR"
log "✅ 备份完成!云端路径:$BUCKET/backups/$DATE/"
赋予执行权限:
chmod +x /root/blog-backup.sh
手动测试:
sudo /root/blog-backup.sh
检查 /var/log/blog-backup.log 是否成功。
七、设置每日自动执行(cron)
sudo crontab -e
添加:
0 2 * * * /root/blog-backup.sh >/dev/null 2>&1
💡 使用 sudo crontab 是因为需要 root 权限读取 /etc/nginx 和 /var/log/nginx。
八、自动清理旧备份(防费用失控)
- 前缀:
backups/ - 操作:过期删除
- 天数:7
九、(可选)端到端加密:防止数据泄露
若担心云服务商窥探,可用 rclone crypt 加密:
rclone config
# 类型选 crypt
# remote 填 rainyun-backup:myblog-backup-2026/encrypted
# 设置密码(务必离线保存!)
然后将脚本中的 BUCKET 改为 your-crypt-name:,所有上传内容将自动加密(连文件名都不可读)。
十、总结:你备份了什么?
| 项目 | 路径 | 是否包含 |
|---|---|---|
| 所有网站文件 | /var/www/html |
✅ |
| 所有 MySQL 数据库 | —— | ✅(通过 --all-databases) |
| Nginx 配置 | /etc/nginx |
✅ |
| 访问/错误日志 | /var/log/nginx |
✅ |
🔔 再次强调:数据库备份用的是 MySQL 用户(如 backup)的密码,不是某个数据库的密码。只要该用户有 ON *.* 权限,就能备份全部库。
附:一键检查清单
- 雨云 Bucket 已创建,密钥已记录
rclone config测试通过/root/.my.cnf权限为600- 备份脚本手动运行成功
sudo crontab -e已添加定时任务- 雨云生命周期规则已设置
你的博客,值得被完整守护。
从此,无论服务器宕机、被黑还是误操作,你都能在 30 分钟内从零重建整站。