目录增量同步是什么
目录增量同步指只传输发生变化的部分,让目标目录与源目录保持一致。rsync 是事实标准:先用大小与修改时间快速判定哪些文件不同,再只传输差异块,因此反复同步的开销远小于整目录复制。增量判定的准确性取决于大小与时间戳是否可靠,需要时可切换到按内容校验。策略上最需要警惕的是删除对齐选项,它会让目标端与源端完全一致,包括删掉源端已经不存在的文件。
基本信息
| 核心工具 | rsync(Linux 与 macOS 自带;Windows 可用 WSL 或 cwRsync) |
|---|---|
| 增量判据 | 默认按文件大小与修改时间;--checksum 改为按内容校验 |
| 危险选项 | --delete、--delete-excluded、--remove-source-files |
| 关键前提 | 两端时间戳可信,源目录在同步期间不再变化 |
典型使用场景
- 发布时把构建产物同步到多台目标主机
- 备份场景做首次全量、后续增量
- 多机之间保持一致的数据目录或静态资源目录
- 迁移时先全量复制,再用增量把差异追平
- 结合文件系统事件监控或定时任务做准实时同步
同步与演练写法
同步与演练写法
rsync -avn --delete src/ dst/ # -n 只演练,先看会删除哪些文件
rsync -av --delete --exclude='*.tmp' src/ dst/ # 排除临时文件后再对齐
rsync -av --checksum src/ host:/data/src/ # 按内容校验判定差异,更准也更慢
rsync -av --partial --append-verify big.iso host:/data/ # 大文件续传并做尾部校验
find src -newer /tmp/last_run -print # 列出上次同步后变动的文件核对常用选项与代价
| 选项 | 作用 | 代价与风险 |
|---|---|---|
| -a | 归档模式,保留权限属主与时间 | 目标端需要对应权限 |
| -n | 演练模式,不做实际改动 | 无代价,建议每次对齐前必跑 |
| --delete | 删除目标端多余文件 | 误删风险高,必须配合演练 |
| --checksum | 按内容判定差异 | CPU 与磁盘 IO 开销上升 |
| --bwlimit | 限制传输速率 | 总时长变长,需与窗口匹配 |
默认判据信任大小与修改时间。如果文件内容变了但时间戳被保留(例如从归档包解压、从备份还原),默认判据会漏掉变化,此时必须用 --checksum。
源路径结尾是否带斜杠语义完全不同:带斜杠表示同步目录内容,不带斜杠表示把目录本身放进目标。配合 --delete 时写错,会在目标端造成大量误删。执行前必须演练,并确认源端挂载正常。