1. rsync 命令概述:Linux 文件同步的瑞士军刀
第一次接触 rsync 是在 2012 年处理服务器迁移时,当时需要将 200GB 的用户数据从旧服务器完整迁移到新服务器。尝试用 scp 命令传输,结果中途网络闪断导致前功尽弃。同事推荐使用 rsync 后,不仅支持断点续传,还能通过校验确保数据一致性,从此这个工具就成了我的运维标配。
rsync(remote synchronize)是 Linux/Unix 系统下最强大的增量文件同步工具,它通过独特的"差异算法"(delta-transfer algorithm)只传输源文件和目标文件之间的差异部分,而非整个文件。这种机制使得它在处理大文件或大量小文件时,能显著减少传输数据量和时间消耗。
1.1 核心优势解析
与传统的 cp/scp 命令相比,rsync 的核心价值体现在三个维度:
-
增量同步:通过对比文件的修改时间和大小,仅同步发生变化的部分。例如同步一个 10GB 的数据库备份文件时,如果只有 1% 内容发生变化,rsync 只会传输约 100MB 的数据量。
-
完整性保障:支持校验和(checksum)验证,确保传输前后文件内容完全一致。这在金融数据同步等对一致性要求严格的场景中尤为重要。
-
灵活过滤:可以通过包含/排除规则(include/exclude)精确控制需要同步的文件类型或目录,比如只同步 *.jpg 图片文件而忽略临时文件。
实测案例:在同步包含 50 万个小文件的目录时,使用 scp 需要 2 小时 17 分钟,而 rsync 首次同步耗时 2 小时 05 分钟(差异不大),但当 5% 文件发生变化后第二次同步,scp 仍需完整传输,rsync 仅用 6 分钟就完成了增量同步。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. rsync 核心参数深度解析
2.1 基础参数组合
最常用的参数组合是 -avzP,这个经典组合已经能满足 80% 的日常同步需求:
bash复制rsync -avzP /source/path user@remote:/dest/path
参数分解说明:
-a(archive):归档模式,等效于-rlptgoD,保持所有文件属性(权限、时间戳等)-v(verbose):显示详细传输过程-z(compress):传输时压缩数据,适合带宽受限环境-P:显示进度条,且支持断点续传(等效于--partial --progress)
注意:
-a参数不会保留硬链接(hard links),如需同步硬链接需要额外添加-H参数
2.2 高级参数应用场景
2.2.1 带宽控制
在业务高峰期同步数据时,为避免占用过多带宽影响线上服务,可以使用 --bwlimit:
bash复制rsync --bwlimit=1000 -av /source user@remote:/dest # 限制 1000KB/s
建议值:
- 生产环境:500-2000 KB/s
- 备份任务:可设置为总带宽的 70%(通过
ifconfig查看总带宽)
2.2.2 断点续传
大文件传输时网络中断是常见问题,--partial 和 --progress 的组合使用:
bash复制rsync -av --
