Il bisogno è semplice: vuoi sapere quando compaiono nuovi file su un server FTP remoto, e vuoi fare qualcosa con loro - scaricarli, elaborarli, avviare un altro flusso di lavoro. Il problema è che i server FTP non inviano notifiche. Stanno lì fermi ad aspettare. Sei tu che devi chiedere.

Ci sono due modi per risolvere questo problema. Il primo richiede il Terminale, conoscenza dello scripting shell e la rassegnazione che le cose si romperanno in silenzio. Il secondo non richiede niente di tutto questo.

Il modo difficile: script shell e cron

Se chiedi a un sysadmin come monitorare una cartella FTP, la prima risposta è quasi sempre una variante di lftp - un client FTP da riga di comando - combinato con un cron job o un agente launchd che lo esegue a intervalli regolari.

La configurazione tipica è questa. Prima si scrive uno script shell che usa lftp per sincronizzare la cartella remota su una locale:

#!/bin/bash
# scarica-da-ftp.sh
lftp -u nomeutente,password ftp.esempio.com << EOF
mirror --only-newer --no-recursion /cartella/remota /Users/tu/Download/ftp-watch/
quit
EOF

Poi lo si pianifica con una voce cron (crontab -e) per eseguirlo ogni cinque minuti:

# Sincronizzazione FTP ogni 5 minuti
*/5 * * * * /Users/tu/script/scarica-da-ftp.sh >> /tmp/ftp-sync.log 2>&1

Funziona. Se tutto è configurato correttamente e rimane correttamente configurato, controlla il server ogni cinque minuti e scarica le novità.

Ma questo approccio ha problemi reali:

Per uno sviluppatore a proprio agio nel terminale che preferisce il codice agli strumenti grafici, questo può essere accettabile. Per chiunque altro - e per i flussi di lavoro dove affidabilità e feedback contano - è lo strumento sbagliato.

Il modo semplice: FTPull

FTPull è un'app macOS che monitora le cartelle FTP remote e scarica automaticamente i nuovi file. È un'interfaccia grafica attorno allo stesso concetto fondamentale - polling periodico del server - ma con tutti i problemi dell'approccio con script risolti.

Per iniziare a monitorare una cartella FTP:

  1. Installa FTPull e aprilo dalla cartella Applicazioni. Aggiunge un'icona alla barra dei menu.
  2. Apri Impostazioni e aggiungi una nuova connessione: hostname, porta, nome utente, password, protocollo (FTP/SFTP/FTPS).
  3. Imposta il percorso della cartella remota - la directory sul server che vuoi monitorare.
  4. Imposta una cartella locale - dove devono finire i file scaricati sul Mac.
  5. Imposta l'intervallo di polling - ogni quanto FTPull controlla il server. Ogni minuto per un monitoraggio reattivo; ogni 5 minuti per un utilizzo di rete più leggero.
  6. Abilita la connessione. FTPull inizia subito a fare polling.

Questa è tutta la configurazione. Da questo momento in poi FTPull gestisce tutto automaticamente. Quando compare un nuovo file sul server, FTPull lo rileva al successivo polling, lo scarica e invia una notifica macOS.

Cosa monitora FTPull

FTPull traccia lo stato della cartella remota confrontando l'elenco file corrente con quello del polling precedente. Qualsiasi novità viene scaricata. In particolare:

Filtri per estensione

Se ti interessano solo certi tipi di file - ad esempio file .csv da un feed dati o file .pdf da un sistema di elaborazione - imposta un filtro per estensione. FTPull ignorerà silenziosamente tutto il resto. È utile quando la cartella remota riceve anche tipi di file su cui non devi agire.

Più cartelle, più server

Uno dei vantaggi pratici rispetto agli script shell è la gestione di connessioni multiple. Hai bisogno di monitorare cinque server FTP diversi - un server cliente, un server interno, il feed di un fornitore e due varianti regionali? Aggiungi cinque connessioni in FTPull. Funzionano tutte in modo indipendente da un'unica icona nella barra dei menu, ognuna con il proprio intervallo di polling e le proprie impostazioni.

Con cron, ognuna richiederebbe uno script separato, una voce cron separata e un file di log separato che non leggerai mai.

Pianificazione

FTPull include una funzione di pianificazione che limita il monitoraggio a certi orari e giorni. Se i file arrivano solo durante l'orario lavorativo - da un sistema che funziona dalle 9 alle 17 - non ha senso fare polling alle 3 di notte di sabato. Imposta la pianificazione (es. 8:00–20:00, lunedì–venerdì) e FTPull si mette in pausa automaticamente fuori da quegli orari.

Questo riduce anche il traffico di rete e il carico sul server - particolarmente rilevante se stai monitorando un server con limiti di frequenza o quote di connessione rigide.

Quando qualcosa va storto

È qui che FTPull si differenzia più chiaramente dall'approccio con script. Quando un download fallisce:

Confrontalo con uno script cron: l'errore viene aggiunto a un file di log che probabilmente non stai leggendo, non succede altro, il file non viene scaricato finché qualcuno non se ne accorge.

Gli script richiedono manutenzione continua

Script shell e cron job non hanno interfaccia, non inviano notifiche e non hanno recupero dagli errori. Un cambio di credenziali, uno spostamento del server o un problema di rete li farà fallire in silenzio - e non lo saprai finché qualcuno non chiede perché i file non sono mai arrivati.

FTPull gestisce tutto questo per te. Configuralo una volta, e funzionerà silenziosamente in background a tempo indeterminato - con feedback completo quando qualcosa richiede la tua attenzione.