A necessidade é simples: saber quando aparecem ficheiros novos num servidor FTP remoto e fazer algo com eles - descarregá-los, processá-los, desencadear outro fluxo de trabalho. O problema é que os servidores FTP não enviam notificações. Ficam à espera. Tem de ser o utilizador a perguntar.
Há duas formas de resolver isto. A primeira exige Terminal, conhecimentos de scripts em bash e aceitar que as falhas acontecem sem aviso. A segunda dispensa tudo isso.
À maneira difícil: scripts e cron
Se perguntar a um administrador de sistemas como monitorizar uma pasta FTP, a resposta habitual passa pelo lftp - um cliente FTP de linha de comandos - combinado com um cron job ou um agente launchd que o executa periodicamente.
A configuração típica é esta. Primeiro, um script em bash que usa o lftp para espelhar a pasta remota numa local:
#!/bin/bash
# descarregar-do-ftp.sh
lftp -u utilizador,palavra-passe ftp.exemplo.com << EOF
mirror --only-newer --no-recursion /pasta/remota /Users/eu/Downloads/ftp-vigiar/
quit
EOF
Depois, agendar com uma entrada no cron (crontab -e) para correr a cada cinco minutos:
# Sincronizar FTP de 5 em 5 minutos
*/5 * * * * /Users/eu/scripts/descarregar-do-ftp.sh >> /tmp/ftp-sync.log 2>&1
Funciona. Se tudo estiver corretamente configurado e permanecer assim, verifica o servidor de cinco em cinco minutos e descarrega o que for novo.
Mas há problemas sérios nesta abordagem:
- Sem notificações. Os ficheiros chegam à pasta - e só se sabe quando se vai ver manualmente.
- Falha sem aviso. Se a palavra-passe mudar, o servidor se mover ou a rede falhar, o script para em silêncio. Descobre-se quando alguém pergunta por que os ficheiros não chegaram.
- Sem interface. Depurar implica ler ficheiros de log. Verificar o estado implica correr comandos.
- Requer manutenção. Atualizações do macOS podem quebrar configurações de cron ou launchd. As credenciais têm de ser atualizadas em scripts de texto simples.
- Sem gestão de erros. Um download parcial ou um timeout no servidor gera apenas uma linha no log - se alguém o estiver a ler.
Para quem está à vontade no terminal e prefere código a interfaces gráficas, isto pode ser aceitável. Para qualquer outra pessoa - e para fluxos de trabalho onde a fiabilidade e o feedback importam - é a ferramenta errada.
À maneira fácil: FTPull
FTPull é uma aplicação macOS que monitoriza pastas FTP remotas e descarrega automaticamente os ficheiros novos. É uma interface gráfica para o mesmo conceito fundamental - polling periódico ao servidor - mas com todos os problemas da abordagem de scripts resolvidos.
Para começar a monitorizar uma pasta FTP:
- Instale o FTPull e abra-o a partir da pasta Aplicações. Aparece um ícone na barra de menus.
- Abra as Definições e adicione uma nova ligação: endereço, porta, utilizador, palavra-passe, protocolo (FTP/SFTP/FTPS).
- Defina o caminho da pasta remota - o diretório no servidor que quer vigiar.
- Defina uma pasta local - onde os ficheiros descarregados devem ficar no Mac.
- Defina o intervalo de polling - com que frequência o FTPull verifica o servidor. A cada minuto para monitorização mais imediata; a cada 5 minutos se preferir menos tráfego de rede.
- Ative a ligação. O FTPull começa a fazer polling de imediato.
É tudo. A partir deste momento, o FTPull trata de tudo automaticamente. Quando aparece um ficheiro novo no servidor, o FTPull deteta-o na próxima verificação, descarrega-o e envia uma notificação macOS.
O que o FTPull monitoriza
O FTPull acompanha o estado da pasta remota comparando a listagem atual com a da verificação anterior. Tudo o que for novo é descarregado. Concretamente:
- Ficheiros novos - ficheiros que não estavam na listagem anterior
- Ficheiros modificados (opcional) - ficheiros cujo tamanho ou data de modificação mudou
- Subpastas - o FTPull pode monitorizar subdiretórios recursivamente, sem precisar de uma ligação separada para cada um
Filtros de extensão
Se só precisar de certos tipos de ficheiro - por exemplo, ficheiros .csv de um feed de dados ou .pdf de um sistema de processamento - configure um filtro de extensão. O FTPull ignora silenciosamente todo o resto. Útil quando a pasta remota recebe tipos de ficheiro que não são relevantes para o seu fluxo de trabalho.
Várias pastas, vários servidores
Uma das vantagens práticas face aos scripts é a gestão de múltiplas ligações. Precisa de monitorizar cinco servidores FTP diferentes - um de cliente, um interno, um fornecedor e duas variantes regionais? Adicione cinco ligações no FTPull. Correm de forma independente a partir de um único ícone na barra de menus, cada uma com o seu próprio intervalo e definições.
Com cron, cada uma seria um script separado, uma entrada de cron separada e um ficheiro de log separado para não ler.
Agendamento
O FTPull inclui uma função de agendamento que restringe a monitorização a determinados horários e dias. Se os ficheiros só chegam em horário laboral - de um sistema que funciona das 9 às 17 - não faz sentido verificar o servidor às 3 da manhã de um sábado. Defina o horário (por exemplo, das 8h às 20h, de segunda a sexta), e o FTPull pausa automaticamente fora desse intervalo.
Isto também reduz o tráfego de rede desnecessário e a carga no servidor - especialmente relevante quando há limites de ligações ou rate limits rigorosos.
Quando algo corre mal
É aqui que o FTPull se distingue mais claramente da abordagem com scripts. Quando um download falha:
- O ficheiro recebe uma etiqueta vermelha do Finder - visível imediatamente na pasta de destino, sem abrir a app
- É enviada uma notificação de erro pelo Centro de Notificações do macOS
- O erro fica registado no log do FTPull com o motivo específico da falha
- O ficheiro é tentado novamente no próximo ciclo de polling
Compare com um script de cron: o erro é acrescentado a um ficheiro de log que provavelmente ninguém está a ler, não acontece mais nada e o ficheiro nunca é descarregado até alguém dar pela falta.
Os scripts exigem manutenção constante
Scripts e cron jobs não têm interface, não enviam notificações e não recuperam de erros. Uma mudança de credenciais, um servidor migrado ou um problema de rede faz com que parem sem aviso - e só se descobre quando alguém pergunta por que os ficheiros nunca chegaram.
O FTPull trata de tudo isso. Configure uma vez e fica a correr discretamente em segundo plano indefinidamente - com feedback completo quando algo precisa da sua atenção.
