использование pscp.exe для передачи sftp очень медленное по сравнению с filezilla - PullRequest
4 голосов
/ 29 марта 2012

У меня странная проблема.Я использую pscp.exe из программы на C # (с process.start) для загрузки файлов на SFTP-сервер.Теперь я настроил новый сервер с той же программой, куда я загружаю на тот же SFTP-сервер, что и раньше, но на новом сервере он работает невероятно медленно.

Странно то, что при попытке загрузитьфайлы вручную через FileZilla, загрузка идет так быстро, как и ожидалось, но не при использовании программы.

Может кто-нибудь объяснить это?Я что-то упускаю, например, настройки Windows или что-то в этом роде?

Ответы [ 4 ]

4 голосов
/ 29 марта 2012

SSH поддерживает то, что мы называем конвейерной передачей - отправка нескольких пакетов SSH без ожидания ответа на каждый пакет. OpenSSH поддерживает эту функциональность, а Putty - нет (по крайней мере, до недавнего времени). Это то, что вы наблюдаете. Другая причина - выбор алгоритмов. Если согласовывается AES, это быстрее, чем DES и 3DES, используемые по умолчанию старыми приложениями.

2 голосов
/ 18 октября 2016

Загрузка файлов с использованием 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"
2 голосов
/ 04 апреля 2012

В итоге я переписал пересылку SFTP, чтобы вместо него использовать оболочку .Net для WinSCP. Решение было быстрым, и передача файлов также. Вот ссылка на документацию.

2 голосов
/ 29 марта 2012

Filezilla может использовать несколько одновременных подключений и повторно использовать открытые подключения. Я считаю, что PSCP является относительно простым приложением.

Библиотека типа SFTP.NET , вероятно, даст лучшие результаты, чем запуск дочернего процесса pscp.

Также было бы полезно использовать ZipPackage для сжатия файлов при их отправке.

...