47.6. Introducción a rsync

rsync resulta ideal para la transferencia periódica de grandes cantidades de datos que no varían mucho. Esto suele ser el caso en las copias de seguridad. Otra aplicación son los denominados staging server. Estos contienen el árbol original y completo de un servidor Web. Este árbol se copia periódicamente al servidor Web verdadero en la “DMZ”.

47.6.1. Configuración y manejo

Existen dos modos de operación para rsync. Por una parte, rsync sirve para archivar y copiar archivos. Esto sólo requiere un shell remoto en el ordenador destino como por ejemplo ssh. Por otra parte, rsync puede actuar como daemon y ofrecer directorios en la red.

El uso básico de rsync no requiere ninguna configuración especial. Por ejemplo, resulta muy sencillo replicar un directorio completo de un ordenador a otro. El siguiente comando sirve para crear una copia de seguridad del directorio personal de tux en el servidor de copias de seguridad sun:

 rsync -baz -e ssh /home/tux/ tux@sun:backup

Para volver a copiar el directorio al ordenador local se utiliza el comando:

 rsync -az -e ssh tux@sun:backup /home/tux/

Hasta este punto el uso de rsync casi no difiere de un programa de copia como scp.

Para poder utilizar todas sus prestaciones, rsync ha de utilizarse en modo “rsync”. Para ello se arranca el daemon rsyncd en uno de los ordenadores. Este daemon se configura con el archivo /etc/rsyncd.conf. Por ejemplo, para dar acceso vía rsync al directorio /srv/ftp, se puede utilizar el siguiente archivo de configuración:

gid = nobody
uid = nobody
read only = true
use chroot = no
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log

[FTP]
        path = /srv/ftp
        comment = An Example
 

Inicie a continuación rsyncd con rcrsyncd start. Para iniciar rsyncd automáticamente al arrancar el ordenador, se puede activar este servicio en el editor de niveles de ejecución de YaST o bien introducir el comando insserv rsyncd. Una alternativa es el inicio de rsyncd desde xinetd, pero esto sólo se recomienda para servidores que no utilizan rsyncd con mucha frecuencia.

El ejemplo también crea un archivo de registro con todas las conexiones. Dicho archivo se encuentra en /var/log/rsyncd.log.

La transferencia desde un ordenador cliente puede comprobarse mediante:

rsync -avz sun::FTP
 

Este comando produce una lista de todos los archivos que se encuentran dentro del directorio /srv/ftp en el servidor. Esta consulta aparece también en el archivo de registro /var/log/?syncd.log. Para iniciar la transferencia hace falta indicar un directorio destino que puede ser “.” si se trata del directorio actual, es decir:

rsync -avz sun::FTP .
 

Con su configuración predeterminada, rsync no borra archivos durante la sincronización. Para lograr este efecto es preciso utilizar la opción adicional --delete. Usando la opción --update los archivos con fecha reciente no son reemplazados por los archivos con fecha anterior. Los posibles conflictos que aparezcan se han de resolver manualmente.

47.6.2. Información adicional

Las páginas del manual man rsync y man rsyncd.conf informan sobre el uso de rsync. Puede obtener documentación técnica sobre el funcionamiento de rsync en /usr/share/doc/packages/rsync/tech_report.ps La página Web del proyecto rsync contiene la información más actual rsync: http://rsync.samba.org.