Fazendo o script de downloads de FTP paralelos (várias conexões) no Windows

0

Eu preciso de uma solução de script para baixar vários sites (mais de 100) por FTP para fins de backup. Para cada site, quero uma solução de script que suporte 10 conexões paralelas a apenas um site.

  • Cada site tem seu próprio endereço de FTP.
  • A divisão da tarefa completa em 10 lotes diferentes é válida, mas ainda haverá 1 conexão com 1 servidor, o que causará um download muito lento. Criar tars no servidor não é uma opção e está fora desta questão: -)

Estou usando o Windows 8.1 de 64 bits.

Eu tentei o FTP do Windows, mas ele suporta apenas 1 conexão paralela a 1 servidor.

O WinSCP também não oferece suporte a mais de uma conexão paralela a um modo de linha de comando do servidor FTP. Eu tentei várias opções e talvez eu esteja fazendo algo errado aqui ???

download.bat > este arquivo é iniciado com direitos de administrador

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

ithaka.txt

open ftp://xxx:[email protected]/domains/ithaka.im/public_html
lcd n:\backupftp\ithaka.im\public_html
get *

Os winscp.exe e winscp.com são executáveis portáveis no mesmo diretório que o download.bat e ithaka.txt

Como resultado disso, não vejo a interface gráfica. Apenas uma tarefa no gerenciador de tarefas. Se eu ativar o log, vejo apenas 1 conexão com 1 servidor FTP por vez. Nenhum download paralelo de 1 servidor FTP.

Se eu alterar o download.bat em (observe que altero .exe para .com ):

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

O resultado será:

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%

etc etc etc .. esses downloads não são paralelos e não são suportados pelo WinSCP.

Então:

  1. Algo errado com o WINSCP
  2. Existe uma solução de script FTP que suporte isso no Windows? Eu olhei em várias alternativas, mas todas elas têm interfaces gráficas que eu não quero ..
por Justme 03.02.2016 / 16:09

1 resposta

1

O script WinSCP não suporta transferências paralelas por si só.

Mas você pode executar vários scripts WinSCP em paralelo.

Você só precisa dividir o conjunto de arquivos / diretórios em lotes.

Na verdade, há um script PowerShell pronto com base no assembly WinSCP .NET que faz isso.

Consulte Automatizando o download em conexões paralelas pelo protocolo SFTP / FTP .

Você pode executar o script (digamos parallel_download.ps1 ) como:

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

O comando acima pode ser usado diretamente em um arquivo de lote ( .bat ).
Ou executado a partir de uma linha de comando, se for mesclado em uma única linha com todos os ^ removidos.

    
por 05.02.2016 / 18:07