rsync 传输数据压缩需启用 -z 或 --compress-level,仅对网络传输的差异块实时压缩解压,不改变文件本身;内网用 level=1,跨地域用默认6,窄带宽可试9;本地同步无效,需注意 CPU 与内存开销。

Linux 中使用 rsync 压缩传输数据,核心是启用 -z 选项或更精细地控制压缩强度,让数据在传输前实时压缩、接收端自动解压,从而降低网络带宽占用——尤其对跨地域、低带宽或高延迟链路效果明显。
基础压缩:用 -z 快速启用
最简单有效的方式是加上 -z(等价于 --compress):
- 它会自动对传输中的数据流启用 zlib 压缩,仅作用于实际发送的块(包括增量变化部分),不重复压缩未改动内容;
- 适合大多数远程同步场景,比如通过 SSH 同步日志目录或配置文件:
按网络条件调压缩等级
默认压缩强度为 6,但可根据 CPU 与带宽权衡调整:
- 内网高速环境(如千兆局域网):用 --compress-level=1,压缩快、CPU 开销小;
- 跨省/跨国服务器(如北京 → 新加坡):推荐 --compress-level=6(默认),平衡速度与压缩率;
- 极窄带宽但 CPU 充足(如 10Mbps 链路):可试 --compress-level=9,进一步减小流量,但注意延时略升;
配合增量机制,压缩更高效
rsync 的压缩不是全文件压缩,而是只对检测到差异的块进行压缩:
- 例如一个 2GB 的数据库文件仅修改了末尾 1MB,rsync 默认只传输并压缩这 1MB 差异块;
- 若手动增大块大小(--block-size=4096),可减少校验开销,同时让压缩更集中、更高效;
- 注意:-z 和 --compress-level 对本地同步无效(无网络传输),仅在远程模式下生效。
注意事项与避坑点
- 压缩不改变源/目标文件本身,只影响传输过程;
- 若目标端内存紧张,避免在低配设备上长期启用高阶压缩(level 7+);
- SSH 加密本身已有一定开销,-z 与 SSH 并存时,总体 CPU 占用会上升,建议监控
top或htop中的 rsync 进程; - 测试时可用 -n(dry-run)先确认哪些文件会被传,再加 -z 实际执行。











