Muchas veces necesitamos una manera rápida y fiable de sincronizar datos entre dos servidores. Un programa que siempre me ha funcionado bien es LFTP (Linux). Es evidente que siempre puedes usar curlftps y rsync (por ejemplo), pero algo funcional sería este script. Viene preparado para usarlo en un cronjob:
Script HTTP
#!/bin/bash login="username" pass="password" host="server.com" remote_dir="/directorio/que/quieres/copiar/del/ftp" local_dir="/directorio/local/que/quieres/como/destino/" trap "rm -f /tmp/synctorrent.lock" SIGINT SIGTERM if [ -e /tmp/synctorrent.lock ] then echo "Synctorrent is running already." exit 1 else touch /tmp/synctorrent.lock lftp -u $login,$pass $host << EOF set ftp:ssl-allow no set mirror:use-pget-n 5 mirror -c -P5 --log=synctorrents.log $remote_dir $local_dir quit EOF rm -f /tmp/synctorrent.lock trap - SIGINT SIGTERM exit 0 fi
Script HTTPS
#!/bin/sh login="username" pass="password" host="server.com" remote_dir="/directorio/que/quieres/copiar/del/ftp" local_dir="/directorio/local/que/quieres/como/destino/" trap "rm -f /tmp/synctorrent.lock" SIGINT SIGTERM if [ -e /tmp/synctorrent.lock ] then echo "Synctorrent is running already." exit 1 else touch /tmp/synctorrent.lock lftp -p 22 -u $login,$pass sftp://$host << EOF set mirror:use-pget-n 5 mirror -c -P5 --log=synctorrents.log $remote_dir $local_dir quit EOF rm -f /tmp/synctorrent.lock trap - SIGINT SIGTERM exit 0 fi
Necesitas hacer que el script sea ejecutable:
chmod 700 synctorrents.sh
Una vez creado el script y hecho ejecutable, puedes programar un cronjob para hacer las descargas de los nuevos ficheros de forma automática. Aquí te dejo una web para generar la línea de cron con Crontab Code Generator.
crontab -e ## y pegas la línea generada en última posición control + o control + x
Si utilizas tiempos cortos, no es realmente preocupante, ya que el script chequea en primera instancia si hay algún proceso anterior bajando archivos.