rsync 增量同步老牌工具:只传变化的那部分,备份和镜像都离不开它

做备份最怕每次都整盘重传:几百 GB 的文件,改了几个就全量复制一遍,既费带宽又费时间。rsync 解决的正是这个痛点——它只比较源和目标的差异,把变化的部分传过去。无论是本地目录镜像、跨机器定时同步,还是搭配 ssh 做远程增量备份,它都是 Linux 和 macOS 世界里绕不开的底层工具,几乎所有图形化备份软件背后都站着它。
它解决什么问题
每次改几个文件就要整盘复制,几百 GB 备份耗时以小时计,根本没法天天做。
远程同步走明文或没有断点续传,网络一断就得从头再来,大目录根本传不完。
需要在两台机器之间保持目录完全一致,手工比对既慢又容易漏文件。
核心能力
| 能力 | 具体能做到什么 |
|---|---|
| 增量传输 | 只发送源与目标之间不一致的数据块,首次全量之后每次只传变化部分,省时省流量。 |
| 支持删除同步 | 提供 –delete 选项让目标与源严格一致,多余文件会被清理,保持镜像纯净。 |
| 远程走 ssh | 原生通过 ssh 加密通道传输,既能保安全又能复用现有密钥体系,不必另开服务。 |
| 断点可续 | 大文件传输中断后再次运行会跳过已完成部分,不用从头再来,适合不稳定网络。 |
| 丰富过滤 | 可用 –exclude 排除缓存、临时文件,也能按大小、模式筛选,备份内容更干净。 |
| 校验保真 | 传输后对文件做校验,确保目标与源逐字节一致,避免静默损坏混入备份。 |

它真正聪明的地方:用滚动校验和算出哪些块变了
rsync 的核心算法叫「滚动校验和」。它会把文件切成小块,分别计算强弱两种校验和,再与目标端已有的校验和列表比对,找出哪些块没变、哪些块新增或被修改。只有差异块会被传输,两端再在目标机把未变的部分直接复用拼接。这就是为什么第二次备份一个改了几个字节的大文件,依然只传几 KB 而不是整个文件——它比对的是内容而非整文件。
要注意的是,rsync 本身只是同步工具,不负责版本历史与加密存储:它不会自动保留三十天前的版本,也不替你管密钥。生产环境通常把它和 cron、ssh 密钥、以及 rsnapshot 这类快照封装搭配使用。另外 –delete 非常危险,一旦源端误删了文件,目标端会被同步删掉,所以重要数据务必配合快照或异地副本,别把 rsync 当成唯一的容灾手段。
同类工具怎么选
| 工具 | 授权 | 差别在哪 |
|---|---|---|
| rsnapshot | 开源免费 | 在 rsync 之上加硬链接快照,能保留多天历史版本,适合做周期性备份。 |
| Unison | 开源免费 | 双向同步工具,两端都能改、再自动合并,比 rsync 更适合多写场景。 |
| Syncthing | 开源免费 | 去中心化实时同步,不用服务器,跨平台点对点,更偏日常文件同步。 |
谁适合用
- 需要每天定时把服务器目录同步到备份机的运维
- 在多台开发机之间保持项目目录一致的程序员
- 做网站发布、用 rsync 推送更新到远程主机的站长
怎么开始
- 在发行版仓库安装 rsync(多数 Linux 与 macOS 已自带,没有就用包管理器补上)。
- 本地镜像目录:rsync -av –delete /源/ /目标/,先去掉 –delete 干跑一次看会动什么。
- 远程同步:rsync -avz -e ssh /源/ 用户@主机:/目标/,走 ssh 加密通道。
- 用 –exclude 排除不需要的目录,例如缓存、日志、构建产物。
- 把命令写进 cron 或定时任务,实现每天凌晨自动增量备份。
- 首次跑完检查目标目录文件数与大小,确认同步符合预期再常态化。
常见问题
Windows 上能用吗?
原生 rsync 跑在类 Unix 系统,Windows 可用 WSL 或 Cygwin 运行,也能用 grsync 这类图形前端调用它。
会不小心删掉文件吗?
带 –delete 时会让目标与源一致、清掉多余文件,首次使用务必先干跑确认,重要数据别单独依赖它。
传大文件中断了要重来吗?
不需要,再次运行会跳过已完成部分,从断点继续,适合不稳定的网络环境。
它算不算真正的备份?
它是同步与镜像工具,本身不保留历史版本,要版本化请搭配 rsnapshot 或快照方案。
授权与合规
rsync 以 GPL-3.0 开源协议发布,由 Samba 团队长期维护,源码公开、可自由使用与改造。 官网:rsync.samba.org。
继续找同类资源
这条属于「系统相关」栏目,同栏目还有更多可直接使用的免费资源,可以在 系统相关全部资源 里按需翻阅。
相关资源
同栏目下这几条也常被一起翻到:
↓ 获取资源
点击按钮直接前往资源页面。