Мне нужно решение сценариев для загрузки нескольких (более 100) веб-сайтов по FTP для резервного копирования. Для каждого веб-сайта мне нужно решение для сценариев, которое поддерживает 10 параллельных подключений только к одному веб-сайту.

  • Каждый сайт имеет свой собственный адрес FTP.
  • Разделение полной задачи на 10 разных пакетов - это нормально, но все равно будет 1 соединение с 1 сервером, что приведет к очень медленной загрузке. Создавать гудки на сервере это не вариант и не может быть и речи :-)

Я использую Windows 8.1, 64-битную.

Я пробовал Windows FTP, но он поддерживает только 1 параллельное соединение с 1 сервером.

Кроме того, WinSCP не поддерживает более 1 параллельного подключения к 1 режиму командной строки FTP-сервера. Я перепробовал несколько вариантов и, возможно, я делаю что-то не так здесь ???

download.bat > этот файл запускается с правами администратора

md n:\backupftp\ithaka.im\public_html
winscp.exe /script="ithaka.txt"  

ithaka.txt

open ftp://xxx:xxxxx@ftp.ithaka.im/domains/ithaka.im/public_html
lcd n:\backupftp\ithaka.im\public_html
get *

winscp.exe и winscp.com являются переносимыми исполняемыми файлами в том же каталоге, что и файлы download.bat и ithaka.txt

В результате этого я не вижу интерфейс GUI. Только задача в диспетчере задач. Если я включаю ведение журнала, я вижу только 1 соединение с 1 сервером FTP одновременно. Нет параллельных загрузок с 1 FTP-сервера.

Если я изменю download.bat на (обратите внимание, что я изменяю .exe на .com):

md n:\backupftp\ithaka.im\public_html
winscp.com /script="ithaka.txt"  

Результатом будет:

modules                   |            0 B |    0,0 KB/s | binary |   0%
php                       |            0 B |    0,0 KB/s | binary |   0%
php.test                  |           4 KB |    6,9 KB/s | binary | 100%
php.module                |           7 KB |    6,6 KB/s | binary | 100%
php.install               |           1 KB |    1,8 KB/s | binary | 100%
php.info                  |          274 B |    1,3 KB/s | binary | 100%
block                     |            0 B |    1,3 KB/s | binary |   0%

и т. д. и т. д. эти загрузки не параллельны и не поддерживаются WinSCP.

Так:

  1. Что-то не так с WINSCP
  2. Есть ли решение для сценариев FTP, которое поддерживает это в Windows? Я рассмотрел несколько альтернатив, но все они имеют графический пользовательский интерфейс, который я не хочу ..

1 ответ1

1

Сценарии WinSCP сами по себе не поддерживают параллельные передачи.

Но вы можете запускать несколько сценариев WinSCP параллельно.

Вам просто нужно разделить набор файлов / каталогов на пакеты.

На самом деле есть готовый скрипт PowerShell, основанный на сборке WinSCP .NET, который делает это.

См. Автоматическая загрузка в параллельных соединениях по протоколу SFTP/FTP.

Вы можете запустить скрипт (скажем, parallel_download.ps1) следующим образом:

powershell.exe -File parallel_download.ps1 -sessionUrl ftp://xxx:xxxxx@ftp.ithaka.im/ ^
    -remotePath /domains/ithaka.im/public_html/ ^
    -localPath n:\backupftp\ithaka.im\public_html\ ^
    -batches 3

Вышеуказанная команда может быть непосредственно использована в командном файле (.bat).
Или выполняется из командной строки, если объединен в одну строку со всеми ^ удалены.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .