用rsync增量备份+crontab定时需稳控路径、权限、免密和环境四要素:先配ssh免密,再写带容错日志的脚本(含源目录末尾/、--delete、--exclude),crontab中显式声明shell和path,并用--dry-run预检、--link-dest实现快照。

直接用 rsync 的增量特性 + crontab 定时触发,就能实现高效、省带宽、低负载的自动备份。关键不是堆参数,而是把路径、权限、免密和环境四件事做稳。
确保 SSH 免密登录可靠
没有这一步,cron 就会卡住——它无法弹出密码输入框。
- 在源服务器上生成密钥(若未生成):
ssh-keygen -t ed25519 - 把公钥推到备份服务器:
ssh-copy-id user@backup-ip - 手动验证:
ssh user@backup-ip ls /backup—— 能立刻返回结果才算成功 - 若远程禁用了密码登录,请检查
/etc/ssh/sshd_config中PubkeyAuthentication yes是否启用并重载服务
写一个带容错的日志化备份脚本
别把 rsync 命令直接塞进 crontab。封装成脚本能看清进度、查失败原因、避免静默出错。
- 脚本示例路径:
/home/user/bin/backup.sh - 核心内容需包含:源目录末尾加
/(同步内容而非目录本身)、--delete镜像清理、--exclude过滤缓存和日志 - 务必检查源目录是否存在,目标路径可写,否则脚本应提前退出并记日志
- 执行后用
$?判断 rsync 是否成功,并在日志中明确标记“完成”或“失败”
用 crontab 正确调度,避开环境陷阱
cron 默认 PATH 很窄,常找不到 rsync 或 ssh,导致脚本看似运行实则失败。
- 编辑任务:
crontab -e - 开头两行必须显式声明:
SHELL=/bin/bashPATH=/usr/local/bin:/usr/bin:/bin - 定时写法示例(每天 2:30 执行):
30 2 * * * /bin/bash /home/user/bin/backup.sh - 首次添加后,建议等几分钟查看日志,或手动运行
run-parts --test /etc/cron.daily类似方式预检
用 --dry-run 和硬链接快照提升安全性
增量备份追求效率,但不能以丢失可追溯性为代价。
- 上线前务必先加
--dry-run运行一次,确认哪些文件会被删、哪些被传,避免误清数据 - 如需保留多份历史快照,可用
--link-dest指向上次备份目录,配合日期命名,实现空间复用的“类时间机器”效果 - 排除项建议写全:
--exclude='cache/' --exclude='logs/' --exclude='*.tmp',防止临时文件污染备份











