You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows下WinSCP传输大文件速度远优于Fedora下scp/rsync的问题求助

Windows下WinSCP传输大文件速度远优于Fedora下scp/rsync的问题求助

这问题我碰到过好多次,核心原因是WinSCP默认对SFTP传输做了不少针对性优化,而Linux下默认的scp/rsync参数并没有适配大文件传输场景,尤其是你用的rsync参数还踩了个小坑。下面给你拆解原因和解决办法:

为什么速度差这么大?

  • WinSCP默认会自动调整SFTP的缓冲区大小,还优化了TCP连接参数,减少小数据包的传输次数,同时它的SFTP实现对大文件传输做了专门适配。
  • 你用的rsync -avz里的-z参数是关键问题之一:你的文件是.tif格式,本身已经是压缩过的,再用rsync压缩会额外占用本地和远程的CPU资源,反而拖慢传输速度,变成CPU瓶颈。
  • 默认的scp和rsync缓冲区都很小,频繁的小批量数据传输会让网络利用率上不去,自然速度就被限制住了。

具体解决办法

1. 优化scp命令

增大传输缓冲区,减少网络交互次数:

scp -B 8192 user@remote.hpc:/grab/path/object.tif /target/path/

这里的8192是缓冲区大小(单位是KB,也就是8MB),你可以根据网络情况调到16384(16MB)试试,找到最适合的数值。

2. 修正rsync命令

去掉无用的压缩参数,加上直接传输(跳过增量检查,单个大文件不需要这个)和大缓冲区:

rsync -avW --progress --buffer-size=8M user@remote.hpc:/grab/path/object.tif /target/path/
  • -W:直接传输整个文件,不做增量比对,节省CPU和时间
  • --buffer-size=8M:增大传输缓冲区,提升网络利用率

3. 用Fedora自带的SFTP客户端优化

如果你习惯图形界面拖放,可以在GNOME文件管理器里的SFTP连接中调整设置:

  • 打开连接后,进入设置(一般是右键连接图标),找到SFTP缓冲区大小,设置为8MB或16MB
  • 或者用FileZilla这类图形化SFTP工具,它默认的优化比系统自带的文件管理器好很多,和WinSCP的速度差距会很小

4. 持久化优化SSH配置

如果经常传文件,可以修改本地的SSH配置~/.ssh/config,添加针对这个HPC的优化参数:

Host remote.hpc
    User your_username
    SftpBufferSize 8388608  # 8MB,单位是字节
    TCPKeepAlive yes
    ServerAliveInterval 30

这样每次连接这个HPC时都会自动应用这些优化,不用每次输参数。

试完这些方法,速度应该能接近WinSCP的水平了!

备注:内容来源于stack exchange,提问作者P. May

火山引擎 最新活动