Skip to content

LFTP, alternativa a RSYNC para backup remoto

Está claro que rsync es el rey del software dedicado a realizar backups remotos de archivos en servidores. Pero por desgracia en algunos casos eso no es posible usarlo. Por ejemplo cuando los archivos originales se encuentra en un hosting compartido al que sólo podemos acceder mediante FTP…

Entonces, ¿qué podemos hacer si queremos hacer backups en remoto de un hosting compartido al que sólo podemos acceder por FTP?.

BackupPor suerte podemos usar una alternativa llamada LFTP, que instalaremos en la máquina donde vamos a almacenar las copias de seguridad de los archivos. Que podría ser, por ejemplo, nuestro propio equipo de trabajo (siempre que usemos linux, porque LFTP no está disponible para Windows).

El siguiente comando conecta al servidor remoto (donde están los archivos originales de los que queremos hacer copia), y copia los archivos y directorios que se encuentren bajo la ruta especificada en el servidor remoto a la ruta indicada para el servidor local (donde queremos tener la copia de los archivos originales).

Sólo copiará los archivos que no hayan sido copiados previamente (parámetro -n del comando mirror) y borrará los archivos de la copia local que no se encuentren ya en el servidor remoto (parámetro -e del comando mirror).

Una vez terminada la tarea desconectará del servidor remoto y terminará LFTP.

lftp -c "open -u usuario,contraseña ftp://dominio.com; mirror -ne /ruta/remota /ruta/local/backup"

Y el siguiente comando hace lo mismo pero invirtiendo los servidores. En este caso se copian los archivos originales del servidor local (el servidor donde se ejecuta LFTP) a la ruta especificada del servidor remoto (al que nos estamos conectando).

lftp -c "open -u usuario,contraseña ftp://dominio.com; mirror -neR /ruta/local /ruta/remota/backup"

Y por último, si queremos hacer copias de varios directorios en distintas rutas en una misma conexión realizada por LFTP, podemos usar un script de LFTP para ejecutar varios comandos de manera más cómoda. Para lo cual crearemos un archivo conteniendo los comandos a ejecutar:

open -u usuario,contraseña ftp://dominio.com
mirror -ne /ruta1/servidor/remoto /ruta1/local
mirror -ne /ruta2/servidor/remoto /ruta2/local
exit

En este ejemplo he llamado al archivo script de LFTPmirror.lftp“, pero podéis darle el nombre que más os guste… Y después ejecutaremos LFTP así:

lftp -f mirror.lftp

De esta manera sólo conectaremos al servidor remoto una única vez para hacer nuestra copia de seguridad de dos directorios (y su contenido) en rutas totalmente distintas del mismo servidor. Ya sólo nos quedaría incorporar la ejecución del comando al crontab y tendríamos un sistema de backup remoto bastante decente y sencillo ;)

Más información acerca de LFTP:

Página oficial LFTP (FAQ, documentación, descarga, etc).
Guía de parámetros abreviada.
Tutorial de LFTP (en inglés).

Published inDesarrolloRecursos

9 Comments

  1. Victor Victor

    Muchisimas gracias, mejor que los otros tutoriales que andan dando vuelta…funciono perfecto.

    Saludos y feclicitaciones

  2. Nacho Nacho

    lftp si está disponible para Windows. Forma parte de cygwin

  3. wmkde wmkde

    Excelente tutorial… digame que tal si deseo excluir una subcarpeta dentro de directorio que quiero respaldar. Bueno espero me puedan ayudar en esto…he buscado pero nada…a ver si alguien me apoya….

  4. jmvc jmvc

    Excelente tutorial…!!! y excelente herramienta para backup recursivos..!!

  5. Chencho Chencho

    Muchas gracias, muy bien explicado, es lo que andaba buscando. Gracias otra vez.

  6. juloo juloo

    Gracias me sirvio mucho

  7. julio rubin julio rubin

    Me funciono perfecto, yo queria respaldar en mi servidor FTP de mi proveedor de internet desde mi NAS
    Con tu ejemplo me funcino.
    lftp -c “open -u usuario,contraseña ftp://dominio.com; mirror -neR /ruta/local /ruta/remota/backup”
    Solo un comentario si tus carpeta de origen tiene un espacio EJEMPLO:
    /volume1/julio/mi carpeta
    debes de poner el signo ‘ al principio y final del nombre d ela carpeta, osea asi:
    /volume1/julio/’mi carpeta’ para que la reconozca
    Saludos

  8. linuxito linuxito

    “borrará los archivos de la copia local que no se encuentren ya en el servidor remoto”
    -e, –delete delete files not present at remote site

    Favor un ejemplo que no entiendo bien , COmo asi puedes eliminar algo que no existe??

    • Samuel Aguilera Samuel Aguilera

      LFTP crea una copia espejo de lo que tienes en el servidor del que estás haciendo la copia. Por lo tanto, si en el servidor original se ha borrado un archivo y tú todavía lo tienes en tu copia local, LFTP lo borrará de tu copia local al ver que ya no está en el servidor que estás duplicando.

Comments are closed.