rsync 就地增量同步是什么
rsync 默认的工作方式是在目标端写临时文件,全部传完再改名覆盖:好处是中断不会破坏目标文件,代价是需要额外的临时空间,大文件尤其明显。对镜像文件、虚拟机磁盘、数据库导出这类超大文件,改动的往往只有少量块,用就地写入模式可以只传差异块、直接写进目标文件,省时间也省空间。代价是一旦中断,目标文件会处于新旧混合状态,重要数据必须先做快照。
基本信息
| 适用平台 | Linux、macOS(两端 rsync 版本建议相近) |
|---|---|
| 语法 | rsync -avh --inplace --partial --progress 源 目标 |
| 相关选项 | --append-verify 校验已有部分后追加 |
| 默认行为 | 临时文件加改名,中断不破坏目标 |
| 就地写入特点 | 省空间省时间,中断后目标新旧混合 |
| 适用对象 | 镜像文件、虚拟机磁盘、大导出文件 |
典型使用场景
- 备份虚拟机磁盘镜像:本地盘到备份存储的日常增量同步。
- 跨机房搬运大镜像文件,小改动只传差异块。
- 数据库导出的超大文件做异地副本更新。
- 磁盘到磁盘的整体复制类数据搬运。
- 网络受限场景下最小化传输量。
常用写法
常用写法
rsync -avh --inplace --partial --progress disk.img backup@nas:/data/ # 就地增量
rsync -avh --append-verify big.iso backup@nas:/data/ # 断点续传语义
rsync -avh --inplace --partial hdd.qcow2 /mnt/backup/ # 盘到盘同样适用
rsync -avhn --inplace --partial disk.img backup@nas:/data/ # 先演练看差异
rsync -avh --bwlimit=50M --inplace disk.img backup@nas:/data/ # 限带宽避免挤占业务
ssh backup@nas 'ls -l /data/disk.img' # 复核目标文件模式与选项对照
| 选项或模式 | 行为 | 使用要点 |
|---|---|---|
| 默认模式 | 临时文件加改名 | 中断不破坏目标,但需要额外临时空间 |
| --inplace | 就地写入 | 省空间省时间,中断后目标新旧混合 |
| --partial | 保留未完成部分 | 断点后可以继续传输 |
| --append-verify | 校验后追加 | 大文件续传更安全 |
| --bwlimit | 限制带宽 | 避免备份挤占业务流量 |
| 演练模式 | 只列出差异 | 大文件同步前先确认传输量 |
就地写入牺牲了中断安全性:目标文件在被中断时可能同时包含新旧内容,对这种文件做校验会发现摘要不匹配,重要数据同步前先做快照。
同步期间目标文件不应被其他进程写入:多写者会导致内容不一致,数据库类文件要先停写或采用一致性手段后再同步。
带宽受限的链路上给同步加限速,避免备份任务把业务流量挤掉;结合演练模式预估传输量再决定执行窗口。