Problemas comunes III: respaldos a distancia con rsync

Aunque existen numerosas herramientas de Escritorio para respaldar y sincronizar archivos en distintas máquinas, ninguno me ha gustado funcionado correctamente. Por lo mismo, prefiero usar el terminal y rsync. Una forma fácil de entender y comenzar con este comando es la siguiente:

serumax@bunbury:~$ comando -opciones /carpeta-o-archivo/origen /carpeta-o-archivo/destino

Es importante destacar que cuando se trata de carpetas  las rutas de origen y destino no se comportan de igual forma si se usa o no un salsh (/) final. De esta forma, si el ejemplo anterior fuese real, tendríamos como resultado la carpeta “destino” ahora contiene una llamada “origen”

Veamos entonces algo más concreto. Pongamos por caso que necesitamos respaldar todos los archivos de la carpeta /var/www/sitio1 en una carpeta de igual nombre pero en otra máquina. Para esto tenemos dos opciones:

Opción 1
rsync -avz /var/www/sitio1 usuario@192.168.0.1:/var/www

Opción 2
rsync -avz /var/www/sitio1/ usuario@192.168.0.1:/var/www/sitio1/

Como pueden observar, para indicar donde respaldaremos los archivos debemos escribir el usuario y la ip de la máquina de destino usuario@192.168.0.1, seguido de los “:” y de la ruta /var/www/sitio1/, esto nos permitirá autenticarnos en la máquina remota tal como lo hacemos con ssh. Para conocer el resto de las opciones de rsync podemos recurrir a man rsync, no obstante, en el ejemplo hemos usado -avc, que significa que respaldaremos la carpeta de froma recursiva en mdo verboso (con salida por pantalla) y con compresión.

Finalmente, para evitar que nos pregunte la password -por ejemplo para programar un crontab- podemas crear un certificado DSA.

Post relacionados

3 thoughts on “Problemas comunes III: respaldos a distancia con rsync

  1. Hola.
    Encuentro excelente rcync
    Pero tengo una duda.

    Tengo un servidorA donde cada hora me genera estadísticas (logs)
    y los quiero respaldar en un servidorB (respaldo).

    por ssh hago lo siguiente desde el ServidorB:

    rsync -avz -e ssh usuario@servidorA:/home/usuario/logs /home/usuario_servidorB/logs

    hasta ahí, todo excelente.
    Pero el problema está en que en el servidorA, el disco es muy chico, entonces quiero eliminar los log a medida que los llevo al servidorB, para que no se me llene, o tenga que estar siempre viendo el espacio en disco.

    como lo puedo hacer?

    se que existe la opción –delete, pero esta opción elimina archivos en la carpeta de destino, y yo necesito eliminar los que asten en la carpeta origen de los logs.

    Como lo puedo hacer? con que comando?

    Gracias de antemano.

    Saludos

    José Kuhn
    jkuhn84@gmail.com

  2. Hola José

    Tienes que hacer un cron que te llame a un bash que borre los archivos que son más viejos y que tienen cierta extensión. En el caso que sigue se borran los archivos de más de 30 días y con extensión .tgz

    find /respaldos/logs/ -name '*.tgz' -mtime +30 -exec rm {} \\;

    Espero que te sirva….
    Saludos

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>