linux自动备份用rsync配cron即可实现增量同步,依赖文件大小与修改时间比对,-a保留元数据,--delete保持目标与源一致,--dry-run预览操作,路径斜杠影响同步语义,脚本封装加日志,--link-dest支持硬链接快照节省空间,cron定时执行保障无人值守。

Linux 自动备份用 rsync 配 cron 就够了——不依赖额外服务,一条命令启动,关键是参数写对、路径写准、定时设稳。
增量同步靠什么生效
rsync 默认就是增量:它不看“上次备份时间”,而是逐个比对源和目标文件的大小与修改时间(mtime)。两者都一致就跳过;任一不同,就传输新版本。不需要维护快照标记或数据库。
- -a 必须加:等价于 -rlptgoD,保留权限、属主、时间戳、软链接等,是备份一致性的基础
- --delete 要慎用但常需:让目标严格跟随源——源里删了的,备份里也清掉;否则旧文件越积越多
- --dry-run 先试跑:加上它可预览实际会传哪些、删哪些,确认无误再正式执行
- 路径末尾斜杠决定语义:/src/ 同步内容,/src 同步目录本身;错一个字符,结构就乱
本地自动备份脚本写法
把命令封装成可执行脚本,方便加日志、做判断、统一管理。
- 新建脚本:sudo nano /usr/local/bin/backup-docs.sh
- 填入内容(按需替换路径):
#!/bin/bash
SOURCE="/home/user/docs/"
DEST="/backup/docs/"
LOG="/var/log/backup-docs.log"
date +"%Y-%m-%d %H:%M:%S - Start" >> $LOG
rsync -a --delete "$SOURCE" "$DEST" >> $LOG 2>&1
date +"%Y-%m-%d %H:%M:%S - Done" >> $LOG
- 赋予权限:sudo chmod +x /usr/local/bin/backup-docs.sh
- 手动测试:sudo /usr/local/bin/backup-docs.sh,检查日志和目标目录是否正确
多版本快照:用 --link-dest 节省空间
想保留历史版本(比如每天一份),又不想磁盘爆满?硬链接快照是主流做法——未变文件共享数据块,每个快照目录都完整可访问。
- 首次备份:rsync -a /data/ /backup/2026-07-06/
- 次日备份前,先轮转(例如 mv /backup/2026-07-06 /backup/2026-07-05)
- 再执行:rsync -a --delete --link-dest=/backup/2026-07-05/ /data/ /backup/2026-07-06/
- 注意:--link-dest 必须指向同文件系统上已存在的可读目录,否则退化为全量
定时执行:用 cron 每天凌晨自动跑
两步完成无人值守:写好脚本后,配置 cron 定时任务。
- 编辑 root 的 crontab:sudo crontab -e
- 添加一行(例如每天凌晨 2:15 执行):15 2 * * * /usr/local/bin/backup-docs.sh
- 保存退出即可生效;cron 会自动加载,无需重启服务
- 建议配合日志重定向,便于后续排查失败原因











