2012-03-29 22 views
4

私は奇妙な問題があります。私はSFTPサーバにファイルをアップロードするために、C#プログラム(process.start)の中からpscp.exeを使用しています。今は同じプログラムで新しいサーバーをセットアップしました。以前と同じSFTPサーバーにアップロードしますが、新しいサーバーでは非常に遅いです。sftp転送用にpscp.exeを使用すると、ファイルジルに比べて非常に遅い

奇妙なことは、FileZillaを使ってファイルを手動でアップロードしようとすると、アップロードが期待どおり高速に実行されますが、プログラムを使用していないことです。

誰でもこれを説明できますか?私は窓の設定や何かのような明白な何かを逃していますか?

答えて

2

SFTP転送をWinSCP用の.Netラッパーを代わりに使用するように書き直しました。解決策は速かったし、ファイル転送もあった。ドキュメントにはlinkがあります。

2

Filezillaでは、複数の同時接続を使用してオープン接続を再利用できます。 PSCPは比較的シンプルなアプリケーションだと思います。

SFTP.NETのようなライブラリは、おそらく子供のpscpプロセスを実行するよりも良い結果になります。

ファイルを送信するときにZipPackageを使用してファイルを圧縮することも役立ちます。

+0

ありがとうございました。 – Keller

+1

JFYI:SSHは組み込みのZLib圧縮をサポートしているので、データを圧縮することで速度が向上することはありません。リンクの+1。 –

4

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

+0

それは理にかなっています。しかし、これは、pscpを使用している古いマシンが高速でアップロードする理由を説明しているとは思えませんが、同じマシンにアップロードしても、新しいマシンでは数桁のアップロードが遅くなります。何かご意見は? – Keller

1

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

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

それからちょうど簡単なコマンドを発行して、ファイルがはるかに高速パテをアップロードされます、これまでできます

WinSCP.com /command "open sftp://username:[email protected]:22" "put your_large_file.zip /var/www/somedirectory/" "exit" 

をそして、あなたが勝ったので、rsyncが何をするか、基本的には同期フォルダが備わっていますあなたのチェック、確認してください」 pscp.exeをもう一度使用したい。

WinSCP.com /command "help synchronize" 
関連する問題