You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用历史构建目录优化rsync基于SSH的传输效率?

利用远程历史目录实现rsync增量传输的方案

完全可以实现你的需求,rsync的--link-dest参数就是专门用来解决这类场景的。它允许rsync在远程端对比指定的历史目录,只传输与历史目录存在差异的文件;对于完全相同的文件,会直接在目标目录创建硬链接指向历史目录中的对应文件,既节省传输带宽,又能减少远程存储占用。

假设你要上传的是2023_02_02目录,远程的历史参考目录是builds/2023_02_01,可以修改命令为:

rsync -avzh -e "ssh" --link-dest=../2023_02_01 ./builds/2023_02_02 akamaicdn:builds/2023_02_02

这里../2023_02_01是相对远程目标目录builds/2023_02_02的路径——因为目标目录在builds目录下,上一级就是builds根目录,刚好能访问到前一天的历史目录。如果远程历史目录的绝对路径更明确,也可以直接写绝对路径,比如--link-dest=/home/user/builds/2023_02_01,避免路径歧义。

其他优化方案

  • 本地预创建增量快照:如果本地也保留了每日构建目录,可以先在本地用硬链接生成当日目录的增量快照,再传输这个快照,能进一步减少本地存储占用:

    cp -al ./builds/2023_02_01 ./builds/2023_02_02-snapshot
    rsync -avzh -e "ssh" --link-dest=../2023_02_01 ./builds/2023_02_02-snapshot akamaicdn:builds/2023_02_02
    

    传输时rsync会同时对比本地快照和远程历史目录,最大程度减少需要传输的文件量。

  • 按需禁用压缩:如果你的网络带宽充足,-z参数的压缩操作会消耗两端的CPU资源,可以去掉-z来提升传输速度。

  • 中断续传支持:添加--partial --partial-dir=.rsync-partial参数,传输中断时未完成的文件会暂存到.rsync-partial目录,下次传输时直接续传,无需重新上传整个大文件。

  • 预校验传输内容:用--dry-run参数模拟传输流程,提前查看哪些文件会被传输,确认配置是否正确:

    rsync -avzh -e "ssh" --link-dest=../2023_02_01 --dry-run ./builds/2023_02_02 akamaicdn:builds/2023_02_02
    

内容的提问来源于stack exchange,提问作者videoguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:50:23