首页/数据/备份与容灾速查/rsync 校验与性能取舍

rsync 校验与性能取舍

默认差异判定依据是文件大小与修改时间;-c 改为逐文件校验和比对更可靠但更慢,--size-only 更快但可能漏掉只改内容的文件。

备份与容灾速查数据更新于 2026-10-13

rsync 怎么判断文件变化

rsync 默认用『文件大小 + 修改时间』判断是否要传:只要两者之一不同就重传。这套判定极快,但依赖时间戳可靠;如果时钟漂移、或者有程序改内容不改大小,可能漏传或反复重传。--checksum 改成逐文件比对校验和,结果可靠但要把两端文件都读完,开销明显上升。

基本信息

适用平台rsync 3.x(Linux / macOS / WSL)
默认依据文件大小 + mtime
可靠性选项-c / --checksum:按内容校验和比对
速度优先选项--size-only:只比大小,最快但漏检最明显
相关选项--ignore-times 忽略时间戳全量比对、--dry-run 预演差异

典型使用场景

  • 日常增量同步:保持默认判定,速度最优
  • 月度完整性核对:用 -c 对关键目录做一次全面比对
  • 时间戳不可信的环境:源端系统时间异常或由第三方程序写文件时改用 -c
  • 大文件集合优化:加大文件用默认判定、校验任务单独安排时间窗
  • 差异审计:--dry-run 先列出将要传输的文件清单再决定执行
  • 只增不改的归档目录:--size-only 足够,速度最快

校验式同步与预演

校验式同步与预演
# 按内容校验和比对(可靠但慢,适合校验类任务)
rsync -avc /data/ /backup/data/
# 先预演,确认差异清单符合预期再真正执行
rsync -av --checksum --dry-run /data/ /backup/data/
# 速度优先:仅比大小(改动内容但大小不变的文件会被漏掉)
rsync -av --size-only /data/ /backup/data/
# 忽略时间戳,强制比较(用于时间戳不可信的场景)
rsync -av --ignore-times /data/ /backup/data/

差异判定方式对比

方式依据代价与风险
默认大小 + mtime最快;时钟漂移会造成多余重传或漏传
-c / --checksum内容校验和可靠;需读取两端全部文件,海量小文件时窗口成倍拉长
--size-only仅文件大小很快;只改内容不改大小的变化会被漏掉
--ignore-times不比较,全部按需重传最保险也最慢,仅在时间戳不可信时使用
对完整性要求高的月度校验任务可用 -c;日常同步保持默认判定即可,把校验安排在独立时间片,避免与业务备份抢 IO。
两端时钟漂移会让默认判定反复重传文件的『未来时间戳』版本,先校准 NTP 再谈优化传输量。

易错点

  • 对海量小文件全量 -c 校验:CPU 与随机读被榨干,窗口成倍拉长,甚至挤掉后续备份任务
  • 同步双方时钟漂移:默认判定反复重传,链路带宽被无谓消耗
  • 用 --size-only 追求速度:内容变了但大小不变的文件永久漏传,且不会有任何报错
  • 只跑 --dry-run 就当完成校验:它只列清单不比对内容,真正的完整性验证仍需校验和

数据来源与参考

  • rsync 手册(--checksum、--size-only、--ignore-times)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌