rsync实现高效同步靠增量传输和断点续传:默认比对大小与mtime,加-c强制校验内容;用-a、-z、-v组合命令,配合--partial与--progress(即-P)支持断点续传;推荐SSH远程同步,结合cron可定时增量备份并用--delete保持镜像一致。

Linux 运维中用 rsync 实现高效同步,关键就两点:只传变化的部分(增量),中断了能接着传(断点续传)。它不是靠重试或全量覆盖,而是靠文件比对和块级传输机制天然支持这些能力。
增量同步靠的是“聪明比对”
rsync 默认对比文件大小和修改时间(mtime),一致就跳过。这适合大多数日常场景,速度快、开销小。
- 如果担心时间戳被篡改或内容变了但时间没动,加 -c(即 --checksum),强制逐块校验内容,确保真正一致
- 首次运行是全量,后续所有同步都自动变成增量——你不用手动标记“上次同步到哪”,rsync 自己记、自己算
- 搭配 -a(归档模式)保留权限、属主、软链、时间戳等,-z 开启传输压缩,-v 看进度,组合起来就是最常用的一线命令:
rsync -avz /src/ user@host:/dst/
断点续传靠的是临时文件 + 显式参数
传输大文件中途断了,rsync 不会从头再来。它会在目标端生成带 .rsync-partial 后缀的临时文件,存下已接收的部分。
- 重跑命令时,必须加上 --partial,rsync 才会识别并复用这个临时文件
- 再配上 --progress,能看到实时进度条;-P 是两者的快捷写法(--partial + --progress)
- 示例:
rsync -avzP /bigdata/ user@backup:/backup/data/
远程同步推荐走 SSH,安全又省事
不用单独配 rsync 守护进程,直接复用系统已有的 SSH 服务,免端口、免认证管理,运维负担小。
- 推过去(本地→远程):rsync -avzP /local/dir/ user@server:/remote/dir/
- 拉回来(远程→本地):rsync -avzP user@server:/remote/dir/ /local/dir/
- 如需跳过某些目录(比如缓存、日志),加 --exclude='cache/' --exclude='logs/'
定时增量备份可以这样落地
结合 cron,每天凌晨做一次同步,既轻量又可靠。
- 写个脚本,比如 /opt/bin/backup-web.sh:
- #!/bin/bash
rsync -avz --delete --exclude='tmp/' --exclude='cache/' /var/www/ user@backup:/backup/www/ - 加 --delete 表示源里删了的文件,目标也同步删除,保持镜像一致性
- 然后加进 crontab:
0 2 * * * /opt/bin/backup-web.sh >> /var/log/backup.log 2>&1


















