El blog de Alejandro Meroño

El blog de Alejandro Meroño Hernández

Sincroniza carpetas ubicadas en equipos diferentes con rsync  

Recientemente me he visto en la necesidad de sincronizar dos carpetas que poseo en equipos diferentes. Habitualmente lo que hacía era copiar regularmente el contenido de la carpeta de mi portátil en otra carpeta de mi equipo de escritorio, de tal manera que las dos tuvieran el mismo contenido. Pero obviamente esta solución no era la más idónea, necesitaba un mecanismo que me permitiera automáticamente, con una intervención mínima por mi parte, tener el mismo contenido en dos carpetas diferentes de distintos equipos, teniendo las dos carpetas sincronizadas. De esta manera, si yo creo o copio un fichero en la carpeta original, automáticamente este fichero aparece en la carpeta del otro equipo. Lo mismo ocurre si yo elimino un fichero de la carpeta origen, ya que éste fichero desaparece entonces de la carpeta del equipo remoto.

Para realizar la sincronización entre carpetas de diferentes equipos he utilizado rsync, una aplicación que permite respaldar archivos y directorios, y SSH, un protocolo que permite iniciar sesiones en máquinas remotas y del que hablé en el siguiente post: Administración remota con SSH

Una de las ventajas que posee rsync es que no transfiere todo el archivo en caso de que se haya modificado en la carpeta origen, sino que sólo transmite las partes que han cambiado.

Veamos pues cómo utilizar rsync y SSH para mantener sincronizados dos carpetas que están en diferentes equipos.

Instalación y parámetros de rsync

Para instalar rsync abrimos la consola (Aplicaciones/Accesorios/Terminal) y escribimos:

  • sudo apt-get install rsync

Como he dicho anteriormente, para conectarnos remotamente a otra máquina utilizaremos ssh. Para que no nos pida la contraseña cada vez que realice la sincronización tendremos que generar una clave pública. Para ello escribimos:

  • ssh-keygen -t rsa

Cuando nos pregunte por la palabra clave la omitimos pulsando dos veces enter. A continuación copiamos la clave pública al equipo remoto con el comando ssh-copy-id.

  • ssh-copy-id -i /home/usuario_local/.ssh/id_rsa.pub usuario_remoto@IP_remota
  • usuario_local habrá que modificarlo por el nombre de nuestro usuario

    usuario_remoto tendremos que sustituirlo por el nombre del usuario en la máquina remota

  • IP_remota tendremos que sustituirlo por la dirección IP del equipo remoto

A continuación tendremos que tendremos que utilizar cron para la sincronización se realice automáticamente. Ya hablé de cron en el siguiente artículo, donde hice un breve repaso de la planificación de tareas en Linux: programando tareas en Linux con cron y at

En la consola escribimos:

  • crontab -e

y en el fichero que se abre escribimos lo siguiente:*/5 * * * * rsync -r --delete /rutaorigen nombre_usuario@IP:/rutadestino

  • “*/5 * * * *” quiere decir que se ejecutará el comando rsync cada 5 minutos
  • El parámetro -r quiere decir que la sincronización se realizará recursivamente, haciendo un recorrido recursivo del origen creando los subdirectorios necesarios en el destino
  • Con el parámetro –delete se eliminarán en el equipo remoto los archivos que se borren en el origen
  • nombre_usuario tendremos que sustituirlo por el nombre de usuario del equipo remoto
  • IP habrá que sustituirlo por la dirección IP del equipo remoto
  • /rutaorigen es la ubicación del origen de los datos
  • /rutadestino es la ubicación del destino de los datos en la máquina remota

Un ejemplo podría ser el siguiente:

  • */5 * * * * rsync -r /home/alex/Documentos alejandro@192.168.1.10:/home/alex/Documentos

Lógicamente podéis cambiar la frecuencia de sincronización para adaptarla a vuestras necesidades. Espero que os sea de utilidad, !un saludo!

Popularity: 3% [?]


Otras entradas que te pueden interesar



Esta entrada tiene

0 comentarios

Escrito por Alejandro Meroño Hernández

Diciembre 28th, 2009 at 5:42 pm

Categoría: Ubuntu

Tagged with ,

Deja un comentario