La necesidad es clara: quieres saber cuándo aparecen archivos nuevos en un servidor FTP remoto y quieres hacer algo con ellos — descargarlos, procesarlos, disparar otro flujo de trabajo. El problema es que los servidores FTP no envían notificaciones. Simplemente están ahí. Tienes que preguntar tú.
Hay dos formas de resolverlo. La primera requiere la Terminal, conocimientos de scripting y asumir que los fallos pasarán desapercibidos. La segunda no requiere nada de eso.
El camino difícil: scripts de shell y cron
Si le preguntas a un administrador de sistemas cómo monitorizar una carpeta FTP, la primera respuesta suele ser alguna variación de lftp — un cliente FTP de línea de comandos — combinado con un cron job o un agente launchd que lo ejecuta según un horario.
La configuración habitual es algo así. Primero, escribe un script de shell que use lftp para sincronizar la carpeta remota con una local:
#!/bin/bash
# descargar-desde-ftp.sh
lftp -u usuario,contraseña ftp.ejemplo.com << EOF
mirror --only-newer --no-recursion /carpeta/remota /Users/tu/Downloads/ftp-watch/
quit
EOF
Luego prográmalo con una entrada cron (crontab -e) para que se ejecute cada cinco minutos:
# Sincronizar FTP cada 5 minutos
*/5 * * * * /Users/tu/scripts/descargar-desde-ftp.sh >> /tmp/ftp-sync.log 2>&1
Funciona. Si todo está correctamente configurado y sigue así, comprueba el servidor cada cinco minutos y descarga cualquier novedad.
Pero este enfoque tiene problemas reales:
- Sin notificaciones. Los archivos llegan a la carpeta — no te enteras hasta que lo compruebas manualmente.
- Falla en silencio. Si la contraseña cambia, el servidor se mueve o hay un problema de red, el script falla sin avisar. Te enteras cuando alguien pregunta por qué no llegaron los archivos.
- Sin interfaz. Depurar requiere leer archivos de log. Comprobar el estado requiere ejecutar comandos.
- Requiere mantenimiento. Las actualizaciones de macOS a veces rompen las configuraciones de cron o launchd. Las credenciales hay que actualizarlas en scripts de shell en texto plano.
- Sin gestión de errores. Una descarga parcial o un timeout del servidor solo produce un error en el log — si es que lo estás leyendo.
Para un desarrollador que se mueve bien en la terminal y prefiere código a herramientas con interfaz, puede ser aceptable. Para cualquier otra persona — y para flujos de trabajo donde la fiabilidad y el feedback importan — es la herramienta equivocada.
El camino fácil: FTPull
FTPull es una app para macOS que monitoriza carpetas FTP remotas y descarga los archivos nuevos automáticamente. Es una interfaz gráfica sobre el mismo concepto fundamental — polling periódico del servidor — pero con todos los problemas del enfoque de scripts resueltos.
Para empezar a monitorizar una carpeta FTP:
- Instala FTPull y ábrelo desde la carpeta Aplicaciones. Añade un icono a tu barra de menú.
- Abre Ajustes y añade una nueva conexión: nombre de host, puerto, usuario, contraseña, protocolo (FTP/SFTP/FTPS).
- Indica la ruta de la carpeta remota — el directorio en el servidor que quieres vigilar.
- Indica una carpeta local — dónde deben guardarse los archivos descargados en tu Mac.
- Configura el intervalo de polling — cada cuánto comprueba FTPull el servidor. Cada 1 minuto para una monitorización reactiva; cada 5 minutos si quieres menos consumo de red.
- Activa la conexión. FTPull empieza a hacer polling de inmediato.
Esa es toda la configuración. A partir de aquí, FTPull lo gestiona todo automáticamente. Cuando aparece un archivo nuevo en el servidor, FTPull lo detecta en el siguiente ciclo de polling, lo descarga y envía una notificación de macOS.
Qué monitoriza FTPull
FTPull rastrea el estado de la carpeta remota comparando el listado actual con el del ciclo anterior. Cualquier novedad se descarga. En concreto:
- Archivos nuevos — archivos que no estaban en el listado anterior
- Archivos modificados (opcional) — archivos cuyo tamaño o fecha de modificación ha cambiado
- Subdirectorios — FTPull puede monitorizar subcarpetas de forma recursiva, así no necesitas una conexión separada para cada subcarpeta
Filtros de extensión
Si solo te interesan ciertos tipos de archivo — por ejemplo, archivos .csv de un feed de datos o .pdf de un sistema de procesamiento — configura un filtro de extensión. FTPull ignorará silenciosamente todo lo demás. Muy útil cuando la carpeta remota también recibe tipos de archivo que no necesitas.
Varias carpetas, varios servidores
Una de las ventajas prácticas sobre los scripts de shell es la gestión de múltiples conexiones. ¿Necesitas monitorizar cinco servidores FTP distintos — uno de cliente, uno interno, el feed de un proveedor y dos variantes regionales? Añade cinco conexiones en FTPull. Todas funcionan de forma independiente desde un único icono en la barra de menú, cada una con su propio intervalo de polling y sus propios ajustes.
Con cron, cada una de esas sería un script separado, una entrada cron separada y un archivo de log separado que probablemente no vayas a leer.
Programación horaria
FTPull incluye una función de programación que limita la monitorización a ciertas horas y días. Si los archivos solo llegan en horario de oficina — de un sistema que funciona de 9 a 5 — no tiene sentido hacer polling a las 3 de la madrugada de un sábado. Configura el horario (por ejemplo, de 8h a 20h, de lunes a viernes) y FTPull se pausa automáticamente fuera de esas horas.
Esto también reduce el tráfico de red innecesario y la carga del servidor — especialmente relevante si monitoreas un servidor con límites estrictos de tasa de conexión o cuotas.
Cuando algo va mal
Aquí es donde FTPull se diferencia más claramente del enfoque con scripts. Cuando una descarga falla:
- El archivo recibe una etiqueta roja en el Finder — visible de inmediato en la carpeta de descarga sin abrir la app
- Se envía una notificación de error al Centro de Notificaciones de macOS
- El error queda registrado en el log de FTPull con el motivo concreto del fallo
- El archivo se reintenta en el siguiente ciclo de polling
Compara esto con un script cron: el error se añade a un archivo de log que probablemente no estás leyendo, no pasa nada más y el archivo no se descarga hasta que alguien se da cuenta.
Los scripts requieren mantenimiento continuo
Los scripts de shell y los cron jobs no tienen interfaz, no envían notificaciones y no recuperan errores. Un cambio de credenciales, un cambio de servidor o un problema de red los hará fallar en silencio — y no te enterarás hasta que alguien pregunte por qué no han llegado los archivos.
FTPull se encarga de todo eso. Configúralo una vez y funciona en segundo plano indefinidamente — con feedback completo cuando algo requiere tu atención.