rsync 是 Linux 下高效可靠的增量备份与同步工具,通过 --link-dest 实现硬链接快照、--dry-run 预览操作、--partial 断点续传等核心选项,配合过滤、日志与定时任务,可构建轻量健壮的本地备份体系。

rsync 是 Linux 下最可靠、高效的增量备份与同步工具,它只传输文件差异部分,节省带宽和时间,同时支持权限、时间戳、软硬链接等元数据的精确保留。用好 rsync,关键在于理解其核心选项逻辑和常见场景下的参数组合。
基础增量备份:保留历史快照
真正的增量备份不是简单覆盖,而是借助硬链接机制实现“空间共享+时间隔离”。常用方式是配合 --link-dest 选项:
- 首次全量备份:
rsync -av --delete /data/ /backup/2024-06-01/ - 后续增量备份:
rsync -av --delete --link-dest=/backup/2024-06-01/ /data/ /backup/2024-06-02/
这样,新备份目录中未改动的文件会以硬链接指向旧备份中的对应文件,既节省空间,又保持每个日期目录都是完整可访问的快照。
安全同步:避免误删与意外覆盖
rsync 的 --delete 很强大,但也危险。建议始终搭配以下防护措施:
- 加 --dry-run 先预览操作(如
rsync -avn ...),确认将删除/更新哪些文件 - 用 --backup + --backup-dir 把被覆盖的旧文件移走而非直接丢弃
- 慎用 --delete-after(删除在传输完成后执行)比 --delete(默认边传边删)更可控
- 对重要路径加 --exclude=*.tmp --exclude=/cache/ 等过滤规则,防止临时文件干扰
提升效率与可靠性的小技巧
实际使用中,几个细节能让 rsync 更稳定、更快、更省心:
- -a 已包含 -rlptgoD,但若需保留 ACL 或 xattr(如 SELinux 上下文),要额外加 -A 和 -X
- 大文件或慢网络时,加 --partial --progress 支持断点续传并显示实时进度
- 避免因文件名含空格或特殊字符出错,推荐用 --files-from=FILE 指定清单,并确保文件用 -0(null 分隔)格式生成
- 脚本中调用前建议先检查源目录是否存在:
[ -d /data ] || exit 1,防止静默失败
定时自动化:结合 cron 与日志管理
把 rsync 嵌入定时任务时,注意记录与异常处理:
- cron 中写绝对路径(如
/usr/bin/rsync),避免环境变量缺失导致命令找不到 - 重定向输出:
2>&1 | logger -t rsync-backup或写入带日期的日志文件,方便追踪 - 用 --max-size=1G 防止单个超大文件拖慢整个备份;必要时加 --bwlimit=5000(KB/s)限速保系统响应
- 备份后校验可选
diff -r /data/ /backup/latest/ | grep -q "Only" || echo "OK"快速判断一致性
rsync 不是黑盒命令,掌握 --link-dest、--dry-run、--partial 这几个核心开关,再配合适当的过滤与日志策略,本地增量备份就能既轻量又健壮。










