jueves, 27 de agosto de 2009

Sincronizando datos: rsync (2)

En el post anterior lo dejamos con lo básico, pudiendo transferir los archivos nuevos, pero sin sincronizar realmente. Veamos algo de lo que puede hacer rsync.

Lo primero es comentar una curiosidad que resulta crucial a la hora de decirle a rsync lo que tiene que copiar. Recordemos la forma básica del comando:

rsync /myuser/mydata/ /myuser/mydata_copy

Si os fijáis, puse una barra al final del nombre de la carpeta origen (/). Por si no lo sabéis, en Unix se utiliza la barra inclinada (/) para separar los nombres de las carpetas, mientras que en Windows se utiliza la barra invertida (\). Pues bien, el poner la barra final le dice a rsync que copie el contenido de la primera carpeta en la segunda. ¿Y si no ponemos la barra? Pues rsync copiará la carpeta misma. Es decir, en este caso, nos aparecerá la carpeta mydata dentro de mydata_copy, tal que así: /myuser/mydata_copy/mydata

Continuemos con la historia. Recordad que quiero sincronizar mi biblioteca personal con la de un servidor, de manera que la copia del servidor sea idéntica a la de mi ordenador. Entonces, lo primero será indicar a rsync que debe sincronizar con otra máquina. Veamos:

rsync /myuser/biblioteca/ myserver.address.com:/users/biblioteca

Como veis, lo único que he hecho es preceder la ruta de la carpeta de destino con la dirección del servidor (puede ser el nombre DNS o la IP), separándolos con dos puntos. Los dos puntos le dicen a rsync que debe establecer conexión con esa máquina. Y ya está. Bueno, no todo. En realidad, lo que hace rsync es utilizar SSH (secure shell), así que en la máquina de destino tendrá que estar funcionando un servidor SSH (si es Linux, OpenSSH se instala rápido y sin problemas). No voy a entrar en detalles, sólo decir que SSH permite acceder a otra máquina de forma "segura", y que es lo que utiliza rsync para identificarse y poder así transferir los archivos. Excepto por el hecho de que los archivos se transmiten por red, no hay más complicación para nosotros. Lo que sí tendremos que hacer es entrar nuestra contraseña de usuario cada vez que usemos rsync para transferir archivos de o hacia otra máquina (sí, podemos hacer rsync miservidor.com:/carpeta_origen/ /mi_ordenador/carpeta_destino). Ojo, la contraseña que usemos en la otra máquina. Tengamos en cuenta que rsync manda automáticamente el nombre de usuario que estemos usando en el momento de ejecutar la orden. ¿Y si tenemos un usuario distinto en el otro sistema? Pues nada más sencillo que esto:

rsync /myuser/biblioteca/ myusername@myserver.address.com:/users/biblioteca

Donde myusername es un nombre de usuario de una cuenta activa en la máquina remota. Entramos su contraseña y ya está (en otro post os comentaré cómo evitar tener que estar introduciendo la contraseña cada vez).

Hay otra opción, que es tener a rsync corriendo como servidor en la máquina destino. En ese caso, tendríamos que separar el nombre de la máquina de la ruta de la carpeta destino por :: en vez de usar :, pero esto es otra historia en la que no nos meteremos (más información en los enlaces que os pasé en el post anterior).

Y por hoy ya es suficiente. La próxima entrada: cómo hacer una sincronización de verdad.

No hay comentarios: