在个人站长的数据保护策略中,无论是选择将数据推送到异地云盘(如Google Drive, OneDrive),还是通过脚本从主服务器拉取数据到另一台机器,目标都是实现异地冗余备份。然而,对于大多数预算有限的站长而言,使用 Rclone 配合廉价或免费的云存储服务是效率最高、性价比最好的选择。本教程将详细指导你如何在 Linux VPS 上设置 Rclone,并利用 Cron 实现每日自动化备份。
步骤一:安装 Rclone
Rclone 是一个功能强大的命令行工具,支持超过50种云存储服务。推荐使用官方脚本进行安装,它会自动检测你的系统类型并安装最新版本。
# 运行安装脚本
curl -s https://rclone.org/install.sh | sudo bash
# 检查安装是否成功
rclone --version
步骤二:配置云存储连接
我们将以连接 Google Drive 为例。运行 rclone config,根据提示完成配置。这一过程需要你在本地浏览器进行授权操作。
rclone config
# 示例配置流程(选择n新建,输入名称如:googledrive,选择对应的存储类型如:drive)
# 之后它会生成一个URL,你需要复制到本地电脑的浏览器完成OAuth认证。
配置完成后,你可以在命令行中测试连接是否成功,并查看你云盘的根目录文件:
rclone lsd googledrive:
步骤三:创建备份脚本
为了确保备份过程的可靠性,我们使用 rclone sync 命令,它会同步源目录和目标目录,只传输变动的文件,效率极高。我们创建一个名为 daily_backup.sh 的脚本。
假设我们要备份 /var/www/html/ (网站文件) 和 /etc/nginx/ (配置) 到云盘的 vps_backup 目录下。
mkdir -p /root/scripts
cd /root/scripts
vi daily_backup.sh
写入以下内容,注意替换 googledrive 为你配置的远程名称。
#!/bin/bash
# 定义源目录 (请根据你的实际情况修改)
SOURCE_DIR="/var/www/html/"
# 定义远程目标和路径
REMOTE_NAME="googledrive"
REMOTE_PATH="vps_backup/website_data/"
# 定义日志文件
LOG_FILE="/var/log/rclone_backup_$(date +%Y%m%d).log"
# 执行 Rclone 同步操作
# --delete-excluded 确保删除目标目录中源目录已删除的文件
# --progress 可以在手动运行时看到进度,但Cron运行时可以去掉
rclone sync ${SOURCE_DIR} ${REMOTE_NAME}:${REMOTE_PATH} \
--copy-links \
--checksum \
--transfers 4 \
--checkers 8 \
--log-file ${LOG_FILE}
# ------------------
# 数据库备份示例 (可选:将数据库dump到本地临时目录后再同步)
# mysqldump -u root -pPASSWORD your_db > /tmp/db_backup.sql
# rclone sync /tmp/db_backup.sql ${REMOTE_NAME}:vps_backup/database_dumps/
# rm /tmp/db_backup.sql
# ------------------
exit 0
赋予脚本执行权限:
chmod +x daily_backup.sh
步骤四:设置 Cron 定时任务
现在,我们使用 Cron Job 来安排脚本每天凌晨 3:00 自动运行。
打开 Cron 表:
crontab -e
在文件末尾添加以下一行:
0 3 * * * /root/scripts/daily_backup.sh >/dev/null 2>&1
这行代码的含义是:每天(*** * *)凌晨 3 点 0 分(0 3)执行 **/root/scripts/daily_backup.sh 脚本,并将所有输出和错误重定向到空,保持后台静默运行。你可以在 /var/log/ 目录下查看到每日生成的日志文件,以监控备份状态。
汤不热吧