La necessitat és clara: vols saber quan apareixen fitxers nous en un servidor FTP remot, i vols fer-ne alguna cosa - descarregar-los, processar-los, disparar un altre flux de treball. El problema és que els servidors FTP no envien notificacions. Simplement estan allà. Has de preguntar tu.
Hi ha dues maneres de resoldre-ho. La primera requereix Terminal, coneixements de scripting i acceptar que les coses fallaran en silenci. La segona no requereix res d'això.
La manera difícil: scripts de shell i cron
Si preguntes a un sysadmin com monitoritzar una carpeta FTP, la primera resposta acostuma a ser alguna variant de lftp - un client FTP de línia de comandes - combinat amb un cron job o un agent launchd que l'executa de forma periòdica.
La configuració típica és així. Primer, escrius un script de shell que fa servir lftp per sincronitzar la carpeta remota amb una de local:
#!/bin/bash
# descarrega-des-de-ftp.sh
lftp -u usuari,contrasenya ftp.exemple.com << EOF
mirror --only-newer --no-recursion /carpeta/remota /Users/tu/Baixades/ftp-watch/
quit
EOF
Després ho programes amb una entrada cron (crontab -e) per executar-ho cada cinc minuts:
# Sincronitza FTP cada 5 minuts
*/5 * * * * /Users/tu/scripts/descarrega-des-de-ftp.sh >> /tmp/ftp-sync.log 2>&1
Funciona. Si tot està configurat correctament i es manté configurat correctament, comprova el servidor cada cinc minuts i descarrega qualsevol cosa nova.
Però aquest enfocament té problemes reals:
- Sense notificacions. Els fitxers arriben a la carpeta - no te n'assabentes fins que ho comproves manualment.
- Falla en silenci. Si canvia la contrasenya, el servidor es mou o hi ha una incidència de xarxa, l'script falla sense dir res. Te n'assabentes quan algú pregunta per què no han arribat els fitxers.
- Sense interfície. Depurar requereix llegir fitxers de log. Comprovar l'estat requereix executar comandes.
- Requereix manteniment. Les actualitzacions de macOS de vegades trenquen configuracions de cron o launchd. Les credencials s'han d'actualitzar en scripts de shell en text pla.
- Sense gestió d'errors. Una descàrrega parcial o un timeout del servidor genera un error al log - si és que algú el llegeix.
Per a un desenvolupador còmode al terminal que prefereix codi a eines gràfiques, pot ser acceptable. Per a tothom altre - i per a flux de treball on la fiabilitat i el feedback importan - és l'eina equivocada.
La manera fàcil: FTPull
FTPull és una app per a macOS que monitoritza carpetes FTP remotes i descarrega els fitxers nous automàticament. És una interfície gràfica al voltant del mateix concepte fonamental - polling periòdic del servidor - però amb tots els problemes de l'enfocament amb scripts resolts.
Per començar a monitoritzar una carpeta FTP:
- Instal·la FTPull i obre-la des de la carpeta Aplicacions. Afegeix una icona al teu menú bar.
- Obre Preferències i afegeix una nova connexió: nom d'host, port, nom d'usuari, contrasenya, protocol (FTP/SFTP/FTPS).
- Defineix el path de la carpeta remota - el directori al servidor que vols vigilar.
- Defineix una carpeta local - on han d'anar els fitxers descarregats al teu Mac.
- Defineix l'interval de polling - amb quina freqüència FTPull comprova el servidor. Cada minut per a una monitorització reactiva; cada 5 minuts si vols un ús de xarxa més lleuger.
- Activa la connexió. FTPull comença a fer polling immediatament.
Fins aquí la configuració. A partir d'aquí, FTPull ho gestiona tot automàticament. Quan apareix un fitxer nou al servidor, FTPull el detecta al proper polling, el descarrega i envia una notificació de macOS.
Què monitoritza FTPull
FTPull segueix l'estat de la carpeta remota comparant el llistat de fitxers actual amb el de l'últim polling. Tot el que és nou es descarrega. Concretament:
- Fitxers nous - fitxers que no eren presents en el llistat anterior
- Fitxers modificats (opcional) - fitxers la mida o marca de temps de modificació dels quals ha canviat
- Subdirectoris - FTPull pot monitoritzar subdirectoris de forma recursiva, de manera que no necessites una connexió separada per a cada subcarpeta
Filtres d'extensions
Si només t'interessen certs tipus de fitxer - per exemple, fitxers .csv d'un feed de dades o fitxers .pdf d'un sistema de processament - defineix un filtre d'extensions. FTPull ignorarà silenciosament la resta. Útil quan la carpeta remota també rep tipus de fitxer que no necessites processar.
Múltiples carpetes, múltiples servidors
Un dels avantatges pràctics respecte als scripts és la gestió de múltiples connexions. Necessites monitoritzar cinc servidors FTP diferents - un servidor de client, un servidor intern, un feed de proveïdor i dues variants regionals? Afegeix cinc connexions a FTPull. Totes s'executen de forma independent des d'una sola icona al menú bar, cadascuna amb el seu propi interval de polling i configuració.
Amb cron, cadascuna seria un script separat, una entrada cron separada i un fitxer de log separat que ningú llegeix.
Programació horària
FTPull inclou una funció de programació que restringeix la monitorització a certes hores i dies. Si els fitxers només arriben en horari laboral - d'un sistema que funciona de 9 a 5 - no té sentit fer polling a les 3 de la matinada d'un dissabte. Defineix l'horari (p. ex., de 8h a 20h, de dilluns a divendres), i FTPull s'atura automàticament fora d'aquelles hores.
Això també redueix el trànsit de xarxa i la càrrega del servidor - especialment rellevant si monitoritzeu un servidor amb límits estrictes de velocitat o quotes de connexió.
Quan alguna cosa va malament
Aquí és on FTPull difereix més clarament de l'enfocament amb scripts. Quan una descàrrega falla:
- El fitxer rep una etiqueta vermella al Finder - visible immediatament a la carpeta de descàrrega sense obrir l'app
- S'envia una notificació d'error via el Centre de Notificacions de macOS
- L'error es registra a la vista de log de FTPull amb la raó específica de la fallada
- Es torna a intentar la descàrrega al proper cicle de polling
Compara-ho amb un script cron: l'error s'afegeix a un fitxer de log que probablement no estàs llegint, no passa res més, el fitxer no es descarrega fins que algú s'adona que falta.
Els scripts requereixen manteniment constant
Els scripts de shell i els cron jobs no tenen interfície, no envien notificacions i no recuperen errors. Un canvi de credencials, un canvi de servidor o una incidència de xarxa els farà fallar en silenci - i no t'assabentaràs fins que algú pregunti per què no han arribat els fitxers.
FTPull ho gestiona tot per tu. Configura-ho una vegada, i s'executa discretament en segon pla indefinidament - amb feedback complet quan alguna cosa necessita la teva atenció.
