Problemas comunes III: respaldos a distancia con rsync
November 30, 08 by serumaxAunque 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
- Como sincronizar dos ordenadores en Linux
- Claves DSA para conectarse por ssh sin contraseña
- Problemas Comunes
Posts relacionados:


José Kuhn Says: 20.08.09 at 9:55 pm
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
serumax Says: 21.08.09 at 1:59 pm
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
José Kuhn Says: 27.08.09 at 4:54 pm
ok, muchas gracias por tu ayuda.
me fue de mucha utilidad
saludos