与filezilla相比,使用pscp.exe进行sftp传输非常慢

时间:2012-03-29 09:54:46

标签: sftp pscp

我有一个奇怪的问题。我正在使用C#程序(带有process.start)中的pscp.exe将文件上传到SFTP服务器。现在我已经设置了一个具有相同程序的新服务器,我在那里上传到与以前相同的SFTP服务器,但它在新服务器中的运行速度非常慢。

奇怪的是,当我尝试通过FileZilla手动上传文件时,上传速度与预期一样快,但在使用程序时却没有。

任何人都能解释一下吗?我错过了像窗户设置或其他什么东西吗?

4 个答案:

答案 0 :(得分:4)

SSH支持我们所说的流水线技术 - 发送多个SSH数据包而不等待对每个数据包的响应。 OpenSSH支持这种功能,而Putty则不支持(至少直到最近)。这就是你观察到的。另一个原因是算法的选择。如果协商AES,则比旧版应用程序默认使用的DES和3DES更快。

答案 1 :(得分:2)

Filezilla可以使用多个并发连接并重用开放连接。我相信PSCP是一个相对简单的应用程序。

SFTP.NET这样的库可能会比运行子pscp进程产生更好的结果。

使用ZipPackage在发送文件时压缩文件也很有帮助。

答案 2 :(得分:2)

我最终重写了SFTP传输,以便使用.Net包装器代替WinSCP。解决方案很快,文件传输也是如此。这是文档的link

答案 3 :(得分:2)

使用WinSCP上传文件的速度要快10倍。

要从命令行执行此操作,首先必须将winscp.com文件添加到%PATH%。它不是顶级域,而是可执行文件.com,位于WinSCP安装目录中。

然后只需发出一个简单的命令,您的文件上传速度就会快得多:

WinSCP.com /command "open sftp://username:password@example.com:22" "put your_large_file.zip /var/www/somedirectory/" "exit"

并确保检查同步文件夹功能,这基本上是rsync的功能,因此您不会再想要使用pscp.exe。

WinSCP.com /command "help synchronize"