rclone 配合 crontab 实现云端自动备份同步需三步:配置云存储连接、编写带错误处理和时间戳的备份脚本、用 crontab 设置定时任务;全程无图形界面,轻量稳定,支持空间检查与失败通知。

用 Rclone 配合 Crontab 实现云端自动备份同步,核心是三步:配置好云存储连接、写一个可靠的备份脚本、再让系统定时执行它。整个过程不依赖图形界面,轻量稳定,适合长期无人值守运行。
1. 先配好 Rclone 远程存储
确保 Rclone 已安装(如 Ubuntu 可 sudo apt install rclone),然后运行:
-
rclone config启动交互式配置向导 - 选
n新建远程,起个易记的名字(比如gdrive或us3-backup) - 按提示选择云服务类型(Google Drive、US3、S3 等),完成 OAuth 授权或填入 Access Key/Secret
- 配置完成后,用
rclone lsd your_remote_name:测试是否能列出根目录 —— 能看到列表就说明连通了
2. 写一个带基础防护的备份脚本
新建文件 backup.sh,内容示例如下(请替换路径和远程名):
#!/bin/bash SOURCE="/home/user/documents" REMOTE="gdrive:backups" LOG="/var/log/backup.log" TIMESTAMP=$(date +%Y%m%d_%H%M%S) <p>echo "[$(date)] 开始备份 $SOURCE → $REMOTE" >> $LOG</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/ai/2742" title="Suna"><img src="https://img.php.cn/upload/ai_manual/001/246/273/177363997675652.png" alt="Suna" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/ai/2742" title="Suna" class="overflowclass">Suna</a> <p class="overflowclass">一款AI工具,主要用于全球首个开源的通用型AI Agent项目,适合需要提升相关任务效率的用户。</p> </div> <a rel="nofollow" href="/ai/2742" title="Suna" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div><h1>使用 sync 保证目标与源完全一致,-P 显示进度,--delete 删除远程多余文件</h1><p>rclone sync -P --delete "$SOURCE" "$REMOTE/$TIMESTAMP" >> $LOG 2>&1</p><p>if [ $? -eq 0 ]; then echo "[$(date)] 备份成功" >> $LOG else echo "[$(date)] 备份失败,请检查日志" >> $LOG fi </p>
- 赋予执行权限:
chmod +x backup.sh - 建议先手动运行一次:
./backup.sh,确认日志无报错、云端出现带时间戳的新目录
3. 用 Crontab 设置定时任务
运行 crontab -e,添加一行(例如每天凌晨 2:30 执行):
- 注意把
/path/to/backup.sh替换为脚本实际绝对路径(可用pwd确认) - 避免使用 ~ 符号,cron 不识别 shell 别名,必须用完整路径
- 如果脚本里调用了 rclone 但提示“command not found”,可在 crontab 中指定 PATH,或在脚本开头加
export PATH="/usr/local/bin:/usr/bin:$PATH"
4. 可选增强:加空间检查与错误通知
在脚本中加入简单磁盘空间判断,防止备份因本地空间不足失败:
# 检查源目录所在分区剩余空间是否大于 1GB
FREE_SPACE=$(df "$SOURCE" | awk 'NR==2 {print $4}')
if [ "$FREE_SPACE" -lt 1000000 ]; then
echo "[$(date)] 警告:磁盘空间不足,跳过本次备份" >> $LOG
exit 1
fi
如需邮件提醒,可搭配 mail 命令或用 curl 推送至 Telegram/钉钉 webhook —— 关键是把错误分支的日志内容发出去,而不是每次成功都打扰你。










