Sincronización de directorios con LFTP (Cronjob)

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.

 


Autor del artículo Miguel Angel del Toro Medina

Y, ya sabéis, para cualquier consulta, podéis contactar conmigo a través del email info@madeltoro.es