6

奇妙な問題があります。C# プログラム (process.start を使用) 内から pscp.exe を使用して、ファイルを SFTP サーバーにアップロードしています。同じプログラムを使用して新しいサーバーをセットアップし、以前と同じ SFTP サーバーにアップロードしましたが、新しいサーバーでは非常に遅く動作します。

奇妙なことに、FileZilla を介して手動でファイルをアップロードしようとすると、アップロードは期待どおりに速く進みますが、プログラムを使用するときはそうではありません。

誰でもこれを説明できますか?Windowsの設定など、明らかなものが欠けていますか?

4

4 に答える 4

4

SSHは、パイプラインと呼ばれるものをサポートしています。つまり、各パケットへの応答を待たずに複数のSSHパケットを送信します。OpenSSHはこの機能をサポートしていますが、Puttyはサポートしていません(少なくとも最近までサポートしていませんでした)。それはあなたが観察するものです。もう1つの理由は、アルゴリズムの選択です。AESがネゴシエートされる場合、古いアプリケーションでデフォルトで使用されるDESおよび3DESよりも高速です。

于 2012-03-29T15:15:24.467 に答える
3

代わりに、WinSCP の .Net ラッパーを使用するように SFTP 転送を書き直しました。ソリューションは高速で、ファイル転送も高速でした。ここにドキュメントへのリンクがあります。

于 2012-04-04T11:26:53.897 に答える
3

WinSCPを使用したファイルのアップロードは、10 倍高速です。

コマンドラインからそれを行うには、まずwinscp.comファイルを %PATH% に追加する必要があります。これはトップレベル ドメインではなく、.comWinSCP インストール ディレクトリにある実行可能ファイルです。

次に、簡単なコマンドを発行するだけで、ファイルがパテよりもはるかに高速にアップロードされます。

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 に答える