Windows Azure
Estou procurando um aplicativo (ou outra solução) que execute dinamicamente uma sincronização bidirecional entre um site SFTP externo e o armazenamento local.
Especificamente, (pensando de maneira orientada ao servidor), há uma pasta de importação e uma pasta de exportação.
Portanto, se houver uma alteração no lado do servidor em um arquivo na pasta de exportação (incluindo new/delete), o lado do cliente refletirá isso (dentro de algum intervalo).
E de maneira semelhante, se houver uma alteração no lado do cliente em um arquivo na pasta de importação, o lado do servidor refletirá isso.
Suponho que seja necessário que este aplicativo exista tanto no cliente quanto no servidor. Talvez seja um tipo especial de servidor SFTP.
O caso de uso específico é para arquivos com nome de carimbo de data e hora que são arquivados diariamente (copiados para uma subpasta de arquivo com nome de carimbo de data e hora e, em seguida, excluídos da pasta principal).
Especialmente interessado em soluções em nuvem, como Azure.
Estou descobrindo que muitos servidores DC SFTP tradicionais ainda existem e os provedores não oferecem muita flexibilidade (por exemplo, eles usam um produto SFTP específico e não mudam). Portanto, o ideal seria um aplicativo/solução que coexistisse com um servidor SFTP legado existente.
Responder1
O FTP Voyager fará isso. (Assumindo janelas, você não disse) https://thwack.solarwinds.com/resources/b/geek-speak/posts/ftp-voyager-debuts-as-solarwinds-free-tool
Ele será instalado como um serviço e possui um agendador para criar perfis de conexão com sites e depois agendá-los para obter dados em horários/intervalos.
Também não é difícil criar scripts de cliente nativo de SFTPs, ou mesmo PSFTP (parte do projeto putty), sintaxe muito semelhante se você estiver familiarizado com comandos ftp.https://www.puttygen.com/psftp
Especificamente a opção -B, com a qual você pode basicamente processar um script de comandos para fazer exatamente como você estava no terminal e, em seguida, tornar isso uma tarefa no agendador de tarefas
-B – It specifies a file with batch commands. The ‘-b’ command helps user automate tasks by allowing them to set commands in advance.
Sincronizar o SFTP dessa maneira, em ambos os casos, não exige que o lado do servidor esteja ciente de que você o está automatizando, muito menos instale qualquer coisa. Ele simplesmente faz a mesma coisa que um usuário faria por meio de código. https://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter6.html
Exemplo usando psftp: crie um arquivo de texto simples chamado dlall.txt
supondo que haja uma pasta na fila chamada iQ e um diretório no outro lado nomeado, o script a seguir ...
lcd - Muda o diretório local para iQ
cd out - muda para o diretório out no lado remoto
mget * - obtém vários arquivos, baixa o que está lá.
sair - sai
lcd .\iQ
cd out
mget *
quit
e depois passe para PSFTP assim
psftp user@host -P [port number] -b dlall.txt
Agora, isso pressupõe que você saiba como fazer autenticação, ambos aceitarão credenciais na linha de comando ou você poderá configurar a autenticação pubkey. Não sugiro senha, pois para automatizá-la é necessário armazenar uma senha em algum lugar em texto simples. O FtpVoyager armazenará senhas, mas pelo menos as criptografará. Ambos funcionarão com o pubkey de forma muito mais segura.
Observe também que você usou a palavra "sincronizar" se quiser ter certeza de que ambos os lados são realmente iguais, isso é mais difícil e provavelmente o levaria de volta ao FTPVoyager
OU possivelmente procure rsync sobre ssh se o servidor suportar isso.