A conexão com o servidor FTP da Microsoft trava ao transferir milhares de arquivos

1

Estou vendo que alguns clientes ftp não podem ser concluídos ao transferir milhares de arquivos para um servidor FTP. O comando mput * é executado por várias horas e, em seguida, trava em

150 Opening BINARY mode data connection.

Não tenho uma maneira fácil de entrar em contato com os administradores do servidor FTP (tudo que tenho é um endereço IP no bloco gerenciado por WeHostWebSites.Com e sei que esse IP é compartilhado por uma dúzia de nomes de domínio).

O servidor FTP se apresenta como

220 Microsoft FTP Service

Então, suponho que seja o IIS.

Estou executando um mput * em um diretório que contém milhares de arquivos. Até que a transferência fique parada por algum tempo, até que a conexão de controle seja fechada por inatividade.

Tendo examinado os logs, vejo o seguinte padrão. Inicialmente, os arquivos são transferidos no modo passivo .

229 Entering Extended Passive Mode (|||53567|)
150 Opening BINARY mode data connection.

Em seguida, os números de porta aumentam até atingirem 65200. Nesse ponto, o servidor retorna 501 .

229 Entering Extended Passive Mode (|||65201|)
501 Server cannot accept argument.

O qual aciona os clientes, como lukemftp (que vem por padrão com instalações do OpenSUSE 11) ou o plug-in FAR do gerenciador FTP (popular entre os usuários do Windows) para alternar para ativo . comece com o comando PORT .

200 PORT command successful.
150 Opening BINARY mode data connection.

netstat -t também mostra que novas conexões vão para a porta 20 / tcp do servidor. Depois de transferir outros 3000 arquivos, o comando trava. Neste ponto, a saída de netstat -t mostra como TIME_WAIT conexões são drenadas e, em seguida, a conexão de controle é fechada por inatividade.

Solução alternativa: Geralmente, é sugerido usar lftp para grandes transferências de FTP e isso provou ser uma maneira de contornar o problema. Observando lftp executando um comando mirror -R em um diretório com mais de 100.000 arquivos, posso ver como os números dinâmicos da porta são executados até 65200 e depois continuar a partir de 49152 mantendo todas as transferências em passivo. Então, este comando é concluído com sucesso.

Existe uma maneira de contornar esse problema sem o uso de lftp (em particular, o que poderia ser feito em um cliente do Windows que não possui lftp ?

Aviso: Esta pergunta foi postada há alguns meses no link , mas não recebeu nenhuma resposta e uma votação recente . Eu decidi removê-lo do ServerFault e repassá-lo no SuperUser.

    
por Dmitri Chubarov 14.10.2014 / 07:57

1 resposta

1

Existe um on access antivirus-software ou continous backup software no servidor? Talvez desativá-lo para fins de teste mude alguma coisa.

Pense no seguinte processo:

  1. put arquivo do ftp-client para o servidor
  2. O
  3. servidor abre o fluxo para o arquivo temporário
  4. software antivírus ou software de backup bloqueia o arquivo (temporário) para verificação ou backup
  5. durante a verificação do arquivo temporário, o ftp-server deseja move do arquivo final para seu local e nome final
  6. já que o arquivo está bloqueado neste momento, a operação final pode falhar e lançar um erro.
por 14.10.2014 / 10:46

Tags