rsync实现本地目录增量同步的核心是差异比对与按块传输,只传变化部分;常用命令为rsync -a /source/ /destination/,其中-a保留属性,末尾斜杠表示同步内容而非目录本身。

用 rsync 实现本地两个目录间的增量同步,核心就是利用它的“差异比对 + 按块传输”机制——只传变化部分,不重复拷贝整个文件。它默认就支持这种高效同步,不需要额外配置服务或守护进程。
本地目录同步的基本命令格式
最常用、最稳妥的写法是:
- rsync -a /source/ /destination/(源路径末尾带斜杠,表示同步内容而非目录本身)
- 如果写成 rsync -a /source /destination(无斜杠),则会把
/source这个目录整体复制进去,结果是/destination/source/...
其中 -a(archive 模式)已包含递归、保留权限、时间戳、软链接、属主属组等关键属性,是生产环境首选。
让同步真正“增量”和“快速”的关键参数
rsync 默认就做增量判断(基于文件大小和修改时间),但以下选项可进一步明确行为或增强可靠性:
- --update (-u):跳过目标端更新时间比源端新的文件,避免“倒退覆盖”
- --delete:删除目标目录中存在、但源目录里已不存在的文件(即保持严格镜像)
- --checksum (-c):强制按文件内容校验(而非仅看时间/大小),适合怀疑文件被静默修改的场景(但会变慢)
- --dry-run:先模拟执行,看哪些文件会被传输或删除,确认无误再真实运行
实际操作建议与注意事项
日常使用推荐组合:rsync -av --delete /data/backup/ /mnt/backup/
-
-v显示详细过程,方便排查 - 首次同步可能较慢,但后续只要文件没变,几乎秒完成
- 注意路径结尾的
/—— 它决定你是“同步目录内容”还是“同步目录结构” - 目标目录不存在时,rsync 会自动创建;若目标是已存在目录,内容会被更新或清理(取决于是否加
--delete)
为什么它比 cp 或 scp 更快更省资源
rsync 不是简单复制全文件。它把每个文件切分成固定大小的数据块(默认约 1KB),计算每块的滚动校验和。对比源和目标后,只传输那些校验和不匹配的块。比如一个 2GB 日志文件只改了最后几行,实际传输可能不到 10KB。
这个机制天然支持增量,且无需额外工具或脚本——只要命令写对,每次运行都是智能的、最小化的同步。

















