用cron配合rsync可实现轻量高效定时增量备份,核心是只传变化文件、保留硬链接快照、自动执行;脚本需生成时间戳目录、执行rsync增量同步并更新latest软链接,再通过crontab定时触发,辅以dry-run校验和排除规则确保安全。

用 cron 配合 rsync 实现定时增量备份,是 Linux 下最实用、最轻量的提效方案。核心不是“每天全拷一遍”,而是只传变化文件 + 保留历史快照 + 自动执行,三者结合就能大幅减少时间与空间开销。
选对工具:rsync 是增量备份的主力
rsync 天然支持差异同步,不用额外开发逻辑。它通过比对文件大小、修改时间、校验和(加 --checksum 时)来判断是否需要传输。默认情况下,-a(归档模式)已包含递归、权限、时间戳等关键属性保留;加上 --delete 可同步删除操作,让备份目录与源保持严格一致。
- 首次运行是全量备份,后续每次都是增量 —— rsync 自动跳过未改动文件
- 搭配 --link-dest 可实现硬链接快照,多个日期目录共用未变文件,节省 90%+ 存储空间
- 若网络不稳定,加 --partial --progress 支持断点续传并显示实时进度
写一个可复用的备份脚本
脚本要完成三件事:生成带时间戳的备份目录、执行增量同步、更新 latest 软链接。以下是一个生产环境常用模板:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
#!/bin/bash SOURCE="/home/user/data/" DEST="/backup/rsync/" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") LATEST="$DEST/latest" NEW_BACKUP="$DEST/$TIMESTAMP" <p>mkdir -p "$NEW_BACKUP" rsync -av --delete --link-dest="$LATEST" "$SOURCE" "$NEW_BACKUP/"</p><p>rm -f "$LATEST" ln -sf "$NEW_BACKUP" "$LATEST"
注意:务必使用绝对路径,避免 cron 执行时因 PATH 不同导致命令找不到;脚本保存后赋予执行权限:chmod +x /path/to/backup.sh
用 crontab 设置定时触发
运行 crontab -e 添加一行,例如每天凌晨 2:15 执行:
15 2 * * * /usr/bin/bash /root/scripts/backup.sh >> /var/log/backup.log 2>&1
- 时间字段按“分 时 日 月 周”顺序,15 2 * * * 表示每天 2:15
- 重定向 >> 把标准输出和错误都记入日志,方便排查失败原因
- 建议首次手动运行脚本测试,确认路径、权限、磁盘空间都正常后再交由 cron 托管
加一层安全防护再上线
自动备份一旦出错可能误删数据,提前加几道保险很必要:
- 先用 rsync -avn(dry-run 模式)跑一次脚本,看它打算删什么、传什么,确认无误再去掉 n
- 对敏感目录加 --exclude=cache/ --exclude=tmp/,避免临时文件干扰
- 在脚本开头加入检查:[ -d "$SOURCE" ] || exit 1,防止源目录被意外删掉导致空备份
- 定期手动进 /backup/rsync/ 目录,用 du -sh * 看各快照大小是否合理,异常膨胀说明可能没生效 link-dest

















