6

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

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

谁能解释一下?我是否遗漏了一些明显的东西,比如 Windows 设置或其他东西?

4

4 回答 4

4

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

于 2012-03-29T15:15:24.467 回答
3

我最终重写了 SFTP 传输,改为使用 WinSCP 的 .Net 包装器。解决方案很快,文件传输也很快。这是文档的链接

于 2012-04-04T11:26:53.897 回答
3

使用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"
于 2016-10-18T02:03:27.273 回答
2

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

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

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

于 2012-03-29T09:59:07.323 回答