Назад | Перейти на главную страницу

Знаете какие-нибудь быстрые ftp-клиенты с возможностью создания сценариев для Windows?

У меня есть сценарий сборки, который использует стандартный Windows Ftp.exe для передачи больших файлов по всему миру каждую ночь. На это нужны годы!

Filezilla работает намного быстрее, но, похоже, не поддерживает скрипты.

Какие-либо предложения?

Будет ли установка cygwin на вашем конце вариантом? Тогда вы сможете использовать bash и (скриптовый) unix FTP-клиент из своего окна Windows.

Есть ли шанс использовать scp вместо ftp? Я использовал pscp в PuTTY и обнаружил, что это довольно скрипт. Putty также включает sftp-клиент fwiw.

Ты можешь использовать NcFtp он может работать в окнах. Он реализует NcFtpPut и NcFtpGet, которые отлично работают со скриптами.

Если полноценный Cygwin не подходит, вы можете попробовать версию для Windows cURL.

WinSCP делает и sFTP, и FTP.

Сценарии просты и хорошо задокументированы

Вы также можете попробовать Script2Cloud от K2SXS.

Он поддерживает четыре объектно-ориентированных языка сценариев (C ++, JavaScript, Pascal, Basic) и поддерживает различные протоколы передачи файлов, включая FTP (S), SFTP, WebDAV, а также некоторые облачные протоколы, такие как Azure и S3, находящиеся в стадии разработки.

Вот веб-страница: http://www.k2sxs.com/script2cloud/

Рискуя показаться фанатиком Linux, можете ли вы переключиться на rsync? или если вы окна робокопии наклонили?

У меня нет опыта, но СкриптFTP может сработать.

вы можете использовать powershell:

$File = "C:\foofile.zip"

    $ftp = "ftp://username:password@mydomain.com.com/upload/incoming/newfile.zip"

    "ftp url: $ftp"

    $webclient = New-Object System.Net.WebClient
    $uri = New-Object System.Uri($ftp)

    "Uploading $File..."

    $webclient.UploadFile($uri, $File)

CoreFTP имеет модуль сценариев. Мы использовали это с некоторым успехом. Не очень хорошо, но вполне нормально. Я поддерживаю идею Cygwin. Я запускаю cygwin на всех своих серверах (во многом из-за моей личной зависимости от tail).

http://support.microsoft.com/kb/96269 есть некоторые примечания по созданию сценариев FTP в Windows.

Wget для Windows (без cygwin.dll) http://pages.interlog.com/~tcharron/wgetwin.html

Откажитесь от FTP и используйте Rsync (DeltaCopy) который копирует только измененные файлы. Если DeltaCopy не делает то, что вам нужно - Cygwin + Rsync + Bash сделает.

Я также использовал ActiveState Perl и FTP-библиотеку для Perl, прежде чем выполнять более сложные FTP-операции.

Основа FTP.exe довольно стабильна, и первый вопрос, который нужно задать:
Почему у вас плохая производительность этого FTP?

Вы сравниваете это с FileZilla производительность.
Я могу придумать только две вещи, которые можно было бы сделать, чтобы превзойти базовую производительность FTP при передаче больших файлов.

  1. Возможно, выполняется загрузка нескольких частей, чтобы несколько подключений загружали файл
    • это поможет, если сервер ограничивает скорость за соединение
    • Возможно, нужно настроить размер окна / буфера TCP, чтобы получить более глубокий канал TCP
    • это поможет, если существует значительная задержка передачи на сервер и обратно.

Мне не удалось найти клиент командной строки (поддерживающий сценарии), которому можно было бы приказать выполнять загрузку нескольких частей. Возможно, если другие отвечающие здесь согласятся с этими идеями, они смогут предложить подходящую ссылку.

Я всегда находил NcFTP чтобы быть подходящим для большинства целей, и ожидал, что эта поддержка будет доступна там. В so-bufsize контроль на NcFTP может помочь с пунктом 2 выше.


В процессе я нашел один скрипт ActiveState Python,
Но понятия не имею, как использовать его для ваших целей.
ссылка: многопоточная загрузка по FTP через REST

Странно то, что в обсуждении этого сценария говорится, что FileZilla не обеспечивает достаточной производительности!

Нам нужно было ускорить загрузку с FTP-сайта клиента. По какой-то причине мы могли получить только 21 КБ / с при обычной загрузке (FileZilla). Используя это, я смог получить 100 КБ / с с 5 подключениями и 200 КБ / с, если бы я смог открыть 10 подключений.

В настоящее время можно загружать только один файл за раз. Еще не задумывались о загрузке нескольких файлов, поскольку это как таковое соответствует нашим текущим требованиям.

Вы можете попробовать wput.