De behoefte is eenvoudig: je wilt weten wanneer er nieuwe bestanden op een externe FTP-server verschijnen, en er iets mee doen - ze downloaden, verwerken, een andere workflow starten. Het probleem is dat FTP-servers geen meldingen sturen. Ze staan er gewoon. Je moet zelf vragen.

Er zijn twee manieren om dit op te lossen. De eerste vereist Terminal, kennis van shellscripts, en de bereidheid om te accepteren dat dingen geruisloos stuk gaan. De tweede heeft dat allemaal niet nodig.

De moeilijke manier: shellscripts en cron

Vraag een systeembeheerder hoe je een FTP-map bewaakt, en het eerste antwoord is doorgaans een variant van lftp - een command-line FTP-client - gecombineerd met een cron-taak of een launchd-agent die hem op schema uitvoert.

De typische opzet ziet er zo uit. Schrijf eerst een shellscript dat lftp gebruikt om de externe map te spiegelen naar een lokale map:

#!/bin/bash
# download-van-ftp.sh
lftp -u gebruikersnaam,wachtwoord ftp.voorbeeld.nl << EOF
mirror --only-newer --no-recursion /externe/map /Users/jij/Downloads/ftp-bewaking/
quit
EOF

Plan dit vervolgens via een cron-invoer (crontab -e) om elke vijf minuten te draaien:

# FTP-synchronisatie elke 5 minuten uitvoeren
*/5 * * * * /Users/jij/scripts/download-van-ftp.sh >> /tmp/ftp-sync.log 2>&1

Dit werkt. Als alles goed is ingesteld en zo blijft, controleert het om de vijf minuten de server en downloadt het nieuwe bestanden.

Maar er kleven echte nadelen aan deze aanpak:

Voor een ontwikkelaar die thuis is in de terminal en de voorkeur geeft aan code boven GUI-tools kan dit acceptabel zijn. Voor iedereen else - en voor workflows waarbij betrouwbaarheid en feedback belangrijk zijn - is het het verkeerde gereedschap.

De makkelijke manier: FTPull

FTPull is een macOS-app die externe FTP-mappen bewaakt en nieuwe bestanden automatisch downloadt. Het is een grafische verpakking rond hetzelfde fundamentele concept - periodiek de server pollen - maar met alle problemen van de scriptaanpak opgelost.

Een FTP-map bewaken instellen:

  1. Installeer FTPull en open het vanuit je Programma's-map. Het voegt een icoon toe aan je menubalk.
  2. Open Instellingen en voeg een nieuwe verbinding toe: hostnaam, poort, gebruikersnaam, wachtwoord, protocol (FTP/SFTP/FTPS).
  3. Stel het externe mappad in - de map op de server die je wilt bewaken.
  4. Stel een lokale map in - waar gedownloade bestanden op je Mac terechtkomen.
  5. Stel het pollinginterval in - hoe vaak FTPull de server controleert. Elke 1 minuut voor responsieve bewaking; elke 5 minuten voor minder netwerkgebruik.
  6. Activeer de verbinding. FTPull begint direct te pollen.

Dat is de hele instelling. Vanaf nu handelt FTPull alles automatisch af. Wanneer er een nieuw bestand op de server verschijnt, detecteert FTPull het bij de volgende poll, downloadt het en stuurt een macOS-melding.

Wat FTPull bewaakt

FTPull houdt de status van de externe map bij door de huidige bestandslijst te vergelijken met die van de vorige poll. Alles wat nieuw is, wordt gedownload. Concreet:

Extensiefilters

Als je alleen bepaalde bestandstypen nodig hebt - .csv-bestanden van een datafeed of .pdf-bestanden van een verwerkingssysteem - stel dan een extensiefilter in. FTPull slaat de rest stilletjes over. Handig wanneer de externe map ook bestandstypen ontvangt die je niet nodig hebt.

Meerdere mappen, meerdere servers

Een van de praktische voordelen ten opzichte van shellscripts is het beheer van meerdere verbindingen. Vijf verschillende FTP-servers tegelijk bewaken - een klantserver, een interne server, een leveranciersfeed en twee regionale varianten? Voeg vijf verbindingen toe aan FTPull. Ze draaien allemaal onafhankelijk vanuit één menubalk-icoon, elk met zijn eigen pollinginterval en instellingen.

Met cron zou elk van die een apart script zijn, een aparte cron-invoer en een apart logbestand dat niemand leest.

Planning

FTPull heeft een planningsfunctie waarmee je de bewaking beperkt tot bepaalde uren en dagen. Als bestanden alleen overkomen tijdens kantooruren - van een systeem dat van 9 tot 5 werkt - heeft het geen zin om 's nachts om 3 uur te pollen. Stel een schema in (bijv. 8.00–20.00 uur, maandag–vrijdag) en FTPull pauzeert automatisch buiten die tijden.

Dit vermindert ook onnodig netwerkverkeer en serverbelasting - met name relevant als je een server bewaakt met strikte snelheids- of verbindingslimieten.

Als er iets misgaat

Dit is waar FTPull het duidelijkst verschilt van de scriptaanpak. Als een download mislukt:

Vergelijk dit met een cron-script: de fout wordt toegevoegd aan een logbestand dat je waarschijnlijk niet leest, er gebeurt verder niets, en het bestand wordt pas gedownload als iemand opmerkt dat het ontbreekt.

Scripts vereisen voortdurend onderhoud

Shellscripts en cron-taken hebben geen interface, geen meldingen en geen foutherstel. Een wachtwoordwijziging, een serververhuizing of een netwerkprobleem laat ze geruisloos falen - en je weet het pas als iemand vraagt waarom de bestanden nooit zijn aangekomen.

FTPull regelt dat allemaal voor je. Eenmalig instellen en het draait stil op de achtergrond, met volledige feedback wanneer je aandacht nodig is.