Lo primero sería instalar el gestor de paquetes Homebrew (una herramienta al estilo de apt-get) en tu mac.
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install lftp
Lftp funciona como el comando ftp pero añade unas cuantas funciones especiales, lo que implica que si lo quieres hacer todo en un click-y-listo tendrás que crear un script. Este es el que uso yo:
#!/bin/bash
##esta es la parte que tienes que parametrizar
login="nombre_usuario"
pass="password"
host="servidor_ftp"
remote_dir="/carpeta_en_el_servidor/"
local_dir="$HOME/carpeta_en_tu_ordenador/"
## fin de los parámetros
base_name="$(basename "$0")"
lock_file="/tmp/$base_name.lock"
trap "rm -f $lock_file" SIGINT SIGTERM
if [ -e "$lock_file" ]
then
echo "$base_name is running already."
exit
else
touch "$lock_file"
lftp -u $login,$pass $host << EOF
set ftp:ssl-allow no
set mirror:use-pget-n 5
mirror -R -e -c -P5 --log="/tmp/$base_name.log" "$local_dir" "$remote_dir"
quit
EOF
rm -f "$lock_file"
trap - SIGINT SIGTERM
exit
fi
Guarda el script en tu máquina con la extensión .command y hazlo ejecutable con:
chmod +x nombre_archivo.command
chmod +x nombre_archivo.command
La extensión .command permite que luego puedas lanzar el script directamente desde el Finder.
La clave del script está en el comando
mirror -R -e -c -P5 --log="/tmp/$base_name.log" "$local_dir" "$remote_dir"
-R indica que la copia es "reversa", es decir, que se copian los contenidos de tu directorio local al remoto. Si quisieras invertir el proceso puedes hacerlo eliminando este parámetro.
-e es una opción importante. Elimina en el servidor remoto los archivos que no existan en el directorio local. Es la opción que garantiza realmente que el directorio de destino sea un espejo del original.
-c continúa el proceso de sincronización en caso de que se haya interrumpido
-P5 trocea los archivos en 5 para hacer 5 conexiones concurrentes. Puedes variar este valor dependiendo de tu conexión.
--log guarda un archivo de log para que puedas analizar si hay algún problema.
¡y ya está! Puedes mover el script a tu escritorio y probarlo lanzando un doble click. Te sugiero hacer primero unas pruebas con un directorio y contenidos de prueba antes de poner tu base de datos de producción en manos de este script :-D.
La clave del script está en el comando
mirror -R -e -c -P5 --log="/tmp/$base_name.log" "$local_dir" "$remote_dir"
-R indica que la copia es "reversa", es decir, que se copian los contenidos de tu directorio local al remoto. Si quisieras invertir el proceso puedes hacerlo eliminando este parámetro.
-e es una opción importante. Elimina en el servidor remoto los archivos que no existan en el directorio local. Es la opción que garantiza realmente que el directorio de destino sea un espejo del original.
-c continúa el proceso de sincronización en caso de que se haya interrumpido
-P5 trocea los archivos en 5 para hacer 5 conexiones concurrentes. Puedes variar este valor dependiendo de tu conexión.
--log guarda un archivo de log para que puedas analizar si hay algún problema.
¡y ya está! Puedes mover el script a tu escritorio y probarlo lanzando un doble click. Te sugiero hacer primero unas pruebas con un directorio y contenidos de prueba antes de poner tu base de datos de producción en manos de este script :-D.
No hay comentarios:
Publicar un comentario