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:

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:

  1. Instal·la FTPull i obre-la des de la carpeta Aplicacions. Afegeix una icona al teu menú bar.
  2. Obre Preferències i afegeix una nova connexió: nom d'host, port, nom d'usuari, contrasenya, protocol (FTP/SFTP/FTPS).
  3. Defineix el path de la carpeta remota - el directori al servidor que vols vigilar.
  4. Defineix una carpeta local - on han d'anar els fitxers descarregats al teu Mac.
  5. 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.
  6. 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:

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:

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ó.