Combinando RoboCopy com FtpUse

7

Nossos clientes precisam transferir arquivos especificados de sua rede para o nosso através do FTP. A transferência deve ser chamada automaticamente sempre que um dos arquivos especificados for alterado. Para este propósito, o RoboCopy é perfeito. No entanto, o RoboCopy não suporta transferência para endereços FTP. Portanto, gostaria de mapear nosso site FTP para uma letra de unidade no servidor cliente. Descobri que o FtpUse é perfeito para mapear um FTP para uma letra de unidade. O mapeamento funciona como esperado e posso ver o conteúdo do site FTP no Windows Explorer - também posso gravar dados na unidade FTP mapeada.

Então, digamos que eu mapeei o site FTP para direcionar Q na minha máquina local com este comando:

ftpuse Q: [ftp address] [password] /USER:[username]

E tente configurar o RoboCopy com este comando:

robocopy [source dir] Q:\ *.xls *.xlsx /COPY:DAT /LOG+:"[LogDir]\FtpCopyLog.txt" /V /NP /MON:1 /MOT:1 /R:10 /W:30 

Quando o RoboCopy é executado, ele falha com a seguinte mensagem de erro:

ERROR 87 (0x00000057) Copying File [source dir]\test2.xlsm The parameter is incorrect

Eu tentei mapear a unidade e executar o comando RoboCopy sob a conta de usuário samme, mas isso não parece resolver o problema.

Espero que alguém possa ajudar.

Qualquer ajuda seria muito apreciada.

    
por user1632306 09.10.2013 / 13:57

3 respostas

3

Tente usar o WinSCP no modo espelho. WinSCP pode ser baixado aqui:

link

Usando o WinSCP você não precisa mapear uma unidade, apenas conecta-se ao FTP diretamente e faz o trabalho para você.

Aqui está um pequeno roteiro BAT que faz isso semelhante ao ROBOCOPY.

ASSISTA: Eu adicionei a opção -delete que remove os arquivos remotos que não correspondem mais à pasta local. Aspas duplas são necessárias porque há espaços no caminho local.

set FTPSERVER=v2008  
set FTPUSER=username  
set FTPPASS=password  
set FTPLOCALE=C:\Users\User\Desktop\Local folder  
set FTPREMOTO=/public  
winscp.com /command "open ftp://%FTPUSER%:%FTPPASS%@%FTPSERVER%/" ^
  "synchronize remote -delete ""%FTPLOCALE%"" %FTPREMOTO%"
    
por 21.04.2015 / 02:36
0

Quando a cópia é executada, você tem permissão para criar arquivos, mas não para sobrescrevê-los. Quão grandes são os arquivos? Pelo que eu recolho toda vez que um arquivo é editado, o arquivo é copiado novamente em sua totalidade e você sobrescreve o arquivo antigo com a nova versão. Não há como avaliar o que mudou no arquivo e apenas anexar os novos dados? Como você não está tentando anexar dados e as ferramentas que está usando não permitem que você sobrescreva o arquivo, você poderia, em teoria, escrever algum tipo de script intermediário que exclua arquivos desatualizados quando eles forem detectados imediatamente antes de copiar o novo arquivo. Isso soa como uma solução desajeitada, mas a coisa toda também soa como um processo desajeitado. Pessoalmente, eu iria reavaliar o que o objetivo é aqui e tal, mas eu estou tentando ficar apenas respondendo a pergunta. Boa sorte!

    
por 20.12.2013 / 18:15
0

Já que você já usa o windows, por que não usar o power shell para fazer isso? Você pode especificar apenas novos arquivos e agendar a tarefa com o agendador de tarefas do Windows, todos com ferramentas internas do Windows. Não há necessidade de pagar por funcionalidade incorporada. Eu suponho que não é uma conexão FTP segura que você está usando. Alguns scripts rápidos proporcionam uma solução barata muito flexível. Eu tenho vários scripts de shell de energia que puxam e empurram arquivos FTP base em critérios específicos.

por 23.03.2015 / 22:51