Comando rsync para copias (backups) remotas

La necesidad

Hacer una copia de seguridad de los datos de mi pc local a un pc remoto el cual solo tiene el sistema operativo básico (nada de entorno gráfico) y bastante espacio libre en el disco duro.

Pero si lo hacia con scp demoraba demasiado, así que me obligue a buscar otra solución

El comando y las opciones

Según nuestra amiga la wikipedia

“Rsync es una aplicación para sistemas de tipo Unix que ofrece transmisión eficiente de datos incrementales comprimidos y cifrados. Mediante una técnica de delta encoding, permite sincronizar archivos y directorios entre dos máquinas de una red o entre dos ubicaciones en una misma máquina, minimizando el volumen de datos transferidos.”

Si deseas saber mas información sobre la aplicación puedes consultar en la wikipedia la información

El comando que utilicé dice básicamente:

$ rsync -uarmzhP --delete --rsh=ssh --stats /local/dir user@ipremota:/remote/dir

Las opciones son:

  • u: update
  • a: archive mode
  • r: recursive
  • m: no envía los directorios vacíos
  • z: comprime mientras transfiere (así se ahorra tiempo y ancho de banda)
  • h: presentación para humanos
  • P: muestra el progreso de la copia
  • delete: borra en el destino los archivos que ya no estén en el origen
  • rsh: especifica el shell remoto a usar (en este ejemplo ssh)
  • stats: entrega alguna información por cada archivo que transfiere

Luego se coloca el directorio origen de la información (para el ejemplo /local/dir) y a continuación el usuario, símbolo de arroba y dirección ip de la máquina destino y también el directorio destino (user@ipremota:/remote/dir) estas opciones en la máquina destino se deben a que estamos usando ssh como protocolo de transferencia.

Por ultimo pide el passwd del usuario en la maquina destino y listo… comienza la copia.

Otra opción bastante poderosa es:

--exclude-from=nofiles

El archivo “nofiles” (puede ser cualquier nombre) es un archivo en el cual se colocan los archivos a no hacer backup, separados en líneas diferentes. Por ejemplo:

*.avi *.mpg *.mp3

Al ser tan complejo y poderoso se pueden colocar muchas otras opciones… puedes mirar el sitio web de rsync para encontrar más opciones y ejemplos, otra opción es man rsync se encuentran otras opciones.