Rsync - Sincronización de directorios como demonio

Rafa Morales 5 Febrero 2014
6min
0
Linux

En el artículo anterior hemos explicado cómo utilizar rsync de manera puntual, utilizando como base SSH para la comunicación. Si la computadora con la que nos queremos conectar no tiene el servicio de SSH (o RSH) corriendo, podemos configurar y utilizar rsync como un demonio en esa computadora. Esto haría que rsync escuche el puerto 873 por conexiones entrantes de otras computadoras utilizando rsync. Esto no es recomendable para la transferencia de archivos a través de redes inseguras, como lo es el Internet, debido a que la transferencia de datos no es cifrada, pero podemos utilizarlo para mantener información sincronizada entre diferentes computadoras en redes internas, así como realizar copias de seguridad.

Podemos instalar el paquete mediante:

apt-get install rsync

 

/etc/default/rsync

Este fichero nos permite configurar rsync como demonio, simplemente con incluir la línea:

RSYNC_ENABLE=true

Y comprobar que el demonio se lanza en SysV o Upstart.

 

/etc/rsyncd.conf

Si este archivo no existe debemos crearlo. Agregaremos las siguientes lineas:

lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

[documentos]
    path = /home/juan/Documentos
    comment = La carpeta documentos de Juan
    uid = juan
    gid = juan
    read only = false
    list = true
    auth users = clientersync
    secrets file = /etc/rsyncd.secrets
    hosts allow = 192.168.1.0/255.255.255.0

Podemos dividir este archivo en dos secciones, los parámetros globales y la sección de módulos. Los parámetros globales definen el comportamiento de rsync. Además de los tres parámetros que uso aquí y que explico a continuación, podemos configurar cosas como el puerto que rsync estará escuchando, pero nos quedaremos con el default de 873.

  • lock file es el archivo que rsync utiliza para manejar el número máximo de conexiones
  • log file es donde rsync guarda un registro sobre su actividad; cuando comenzó a escuchar, cuando y de donde se conectan otras computadoras, y cualquier error que encuentre.
  • pid file es donde el servicio de rsync escribirá la ID del proceso que le fue asignada, esto es útil por que podemos utilizar esta id del proceso para detener el servicio.

Después de los parámetros globales, tenemos la sección de módulos, cada módulo es una carpeta que compartimos con rsync, las partes importantes aquí son:

  • [nombre] es el nombre que le asignamos al módulo. Cada módulo exporta un árbol de directorios. El nombre del módulo no puede contener diagonales o un corchete de cierre.
  • path es la ruta a la carpeta que estamos haciendo disponible con rsync.
  • comment es un comentario que aparece junto al nombre del módulo cuando un cliente obtiene la lista de todos los módulos disponibles.
  • uid Cuando el servicio de rsync es ejecutado como root, podemos especificar que usuario es dueño de los archivos que son transferidos.
  • gid Esto nos permite definir el grupo que será dueño de los archivos que sean transferidos cuando el servicio es ejecutado como root.
  • read only determina si los clientes que se conectan a rsync pueden subir archivos o no, el valor por default de este parámetro es true (verdadero) para todos los módulos.
  • list le permite que el módulo sea listado cuando los clientes piden una lista de módulos disponibles, poniendo esto en false (falso) esconde el módulo del listado.
  • auth users es una lista de los usuarios que tienen permitido acceder al contenido de este módulo, los usuarios son separados por comas. Los usuarios no necesitan existir en el sistema, son definidos por el archivo secrets.
  • secrets file define el archivo que contiene los nombres de usuario y las contraseñas de los usuarios válidos de rsync.
  • hosts allow son las direcciones que tienen permitido conectarse al sistema. Sin este parámetro cualquier computadora tiene permitido conectarse.

 

/etc/rsyncd.secrets

Una vez que rsyncd.conf está apropiadamente configurado, necesitamos crear el archivo que contenga todos los nombres de usuario y las contraseñas que podrán conectarse al servicio de rsync. Estos nombres de usuario y contraseñas son independientes de los usuarios que existen en el sistema, así que podemos crear usuarios que ya existen en el sistema sin problemas. Ya que especificamos el archivo /etc/rsyncd.secrets en rsyncd.conf. En este archivo agregamos los nombres de usuario y las contraseñas, uno por linea, separados por dos puntos:

clientersync:passWord
juan:PassWord
respaldo:Password
usuario:password

Finalmente, cambiamos los permisos de este archivo para que no pueda ser leído o modificado por otros usuarios, rsync fallará si los permisos de este archivo no están apropiadamente configurados:

sudo chmod 600 /etc/rsyncd.secrets

 

Cómo conectarse al demonio de manera remota

Para conectarse a rsync cuando está corriendo como demonio, en vez de utilizar dos puntos como cuando estamos utilizando SSH, necesitamos usar un doble dos puntos, seguidos por el nombre del módulo, y el archivo o directorio que queremos copiar o sincronizar. Podemos usar todos los parámetros que se explicaron en el artículo anterior:

rsync -rtv juan@192.168.1.100::documentos/origen/ destino/

Otra manera de acceder al archivo sería utilizando rsync:// seguido por la dirección del servidor, el módulo, y finalmente la localización de la carpeta que queremos acceder:

rsync -rtv rsync://juan@192.168.1.100/documentos/origen/ destino/

 

Basado en el artículo de Jveweb.net.