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:
- Nessuna notifica. I file arrivano nella cartella - tu non lo sai finché non vai a controllare manualmente.
- Fallisce in silenzio. Se la password cambia, il server si sposta o la rete ha un problema, lo script fallisce senza dire nulla. Lo scopri quando qualcuno chiede perché i file non sono arrivati.
- Nessuna interfaccia. Il debug richiede la lettura dei file di log. Verificare lo stato richiede l'esecuzione di comandi.
- Richiede manutenzione. Gli aggiornamenti di macOS a volte rompono le configurazioni cron o launchd. Le credenziali devono essere aggiornate in script shell o file di credenziali in testo chiaro.
- Nessuna gestione degli errori. Un download parziale o un timeout del server produce semplicemente un errore nel log - se stai leggendo il log.
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:
- Installa FTPull e aprilo dalla cartella Applicazioni. Aggiunge un'icona alla barra dei menu.
- Apri Impostazioni e aggiungi una nuova connessione: hostname, porta, nome utente, password, protocollo (FTP/SFTP/FTPS).
- Imposta il percorso della cartella remota - la directory sul server che vuoi monitorare.
- Imposta una cartella locale - dove devono finire i file scaricati sul Mac.
- 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.
- 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:
- Nuovi file - file che non erano presenti nell'elenco precedente
- File modificati (opzionale) - file la cui dimensione o timestamp di modifica è cambiato
- Sottocartelle - FTPull può monitorare le sottocartelle in modo ricorsivo, quindi non hai bisogno di una connessione separata per ogni sottocartella
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:
- Il file riceve un tag rosso nel Finder - visibile immediatamente nella cartella di download senza aprire l'app
- Viene inviata una notifica di errore tramite il Centro Notifiche di macOS
- L'errore viene registrato nella vista log di FTPull con il motivo specifico del fallimento
- Il file viene ritentato al prossimo ciclo di polling
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.
