He rescatado este artículo que había publicado en GALPon sobre como usar y administrar RSYNC.
Como todos ya sabréis, RSYNC es una herramienta de que nos permite tener perfectamente sincronizadas varios ordenadores, directorios, ficheros ...
Una vez tenemos RSYNC instalado (con la herramienta de instalacion de paquetes de nuestra distribucion (urpmi, yast, apt-get, emerge... ) tenemos que configurar el servidor. Podemos configurarlo via XINETD o INETD.
Si lo queremos configurar con XINETD (recomendado), tendremos que añadir el servicio a nuestro /etc/xinetd.conf, de la siguiente manera:
service rsync
{
instances = 1
port = 873
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
disable = no
}
Basicamente esto quiere decir....
service: nombre del servicio (identificador)
instances: numero de conexiones
port: puerto por el que correrá el servicio (el mismo que en /etc/services)
socket_type: stream para TCP y dgram para UDP basicamente
protocol: protocolo
wait: yes: single-threaded, no: multi-threaded
user: usuario por el que correrá el servicio
server: programa a ejecutar para el servicio
server_args: argumentos que se le pasa al programa (server)
disable: determina si se deshabilita el servicio
Una vez explicado esto, vamos a configurar INETD como alternativa para los que no useis XINETD. Se deberá poner lo siguiente en /etc/inetd.conf:
rsync stream tcp nowait root /usr/bin/rsync rsync --daemon
La explicación de XINETD que he expuesto más arriba nos servirá para entender esto también.
Una vez configurado XINETD o INETD procederemos a recargar el servicio haciendo como root:
# killall -HUP inetd
En el caso de INETD o:
# killall -HUP xinetd
En el caso de XINETD.
Una vez tenemos nuestro servidor RSYNC corriendo perfectamente, procederemos a configurar nuestros "modulos". Para ello veremos 2 archivos importantes: /etc/rsyncd.conf y /etc/rsyncd.secrets.
Veremos como configurar rsyncd.conf perfectamente con un ejemplo:
#
# /etc/rsyncd.conf
####
# Maximo numero de conexiones simultaneas
max connections = 4
# Fichero a mostrar en cada conexion
motd file = /etc/motd
# Fichero donde se grabarán los mensajes importantes
log file = /var/log/rsync.log
# Tiempo máximo de espera
timeout = 300
# Nombre del modulo (identificador)
[backup]
# Comentario. Esto se mostrará cuando pedimos una lista de los modulos activos.
comment = Backup
# Directorio a "compartir"
path = /home/tanke/backups
# El modulo se podrá leer y escribir
read only = no
# El modulo no se mostrará cuando pidamos una lista de los modulos activos
list = no
# Usuario y grupo con el que se grabarán los ficheros (para conservar los permisos perfectamente)
uid = tanke
gid = tanke
# Usuarios con acceso al modulo
auth users = tanke
# Hosts que tienen permitido acceder al modulo
hosts allow = 192.168.0.1
# Donde guardamos los usuarios/contraseñas de los usuarios. El formato de este archivo es: usuario:contraseña. Con la contraseña en plano.
secrets file = /etc/rsyncd.secrets
# Incrementamos la seguridad enjaulando a los usuarios en el modulo. La desventaja es que no se podrán acceder a symlinks a no ser que sea root.
use chroot = yes
# Antes definimos las maximas conexiones permitidas para el rsync en general. Aqui definimos las maximas conexiones para el modulo.
max connections = 2
# Y para asegurarnos de que esto no se excede creamos un archivo lock.
lock file = /var/run/rsyncd.lock
# Excluimos para la descarga/subida del modulo el fichero .htpasswd
exclude = .htpasswd
Esta es una configuración estandar. Si quieres más información, en la página man (man rsyncd.conf) tienes toda la información necesaria.
Una vez tenemos nuestro modulo configurado, vamos a configurar nuestro archivo de contraseñas escribiendo en una terminal como root:
# echo tanke:puerto >> /etc/rsyncd.secrets
Asi, añadimos al usuario tanke con la contraseña puerto para acceder a los modulos a los que tanke tenga acceso.
Ahora veamos como usaremos nuestro modulo:
Descargar el contenido del modulo
(rsync -rvzP usuario@servidor::modulo dir_donde_lo_guardaremos)
# rsync -rvzP tanke@servidor.org::backup /home/tanke
Subir contenido al modulo
(rsync -avzP directorio_a_subir usuario@servidor::modulo)
# rsync -avzP . tanke@servidor.org::backup
Expliquemos un poco más que acabamos de hacer...
Para bajarnos cosas del modulo ejecutamos rsync con los parametros -rvzP lo cual quiere decir:
-r : modo recursivo, nos bajará todo lo que haya en el directorio y en los directorios que haya dentro.
-v : modo verboso: ampliamos la salida de mensajes, por si hay errores.
-z : comprimir datos
-P : mostramos barra de progreso
Para subir cosas al modulo sin embargo, le pasamos los parametros -avzP:
-a : modo archivo, equivale a:
- Conservar permisos
- Conservar enlaces simbolicos
- Modo recursivo
- Preservar dispositivos
- Preservar dueño y grupo
- Preservar hora de la ultima modificacion
-v : modo verboso
-z : comprimir datos
-P : mostrar progreso
Si quisiesemos conservar totalmente dos repositorios sincronizados, nos interesaria añadir el flag --delete cuando subimos algo al modulo. Esto lo que hará es borrar todo aquello que exista en el directorio remoto pero no exista en el directorio local.
Para más información como siempre mirad las páginas man y sobre todo la página oficial : http://rsync.samba.org
Un saludo,
Hola. Me interesaria saber como poder copiar todo el directorio raiz y hacer para que cuando el servidor principal se “caiga” el secundario lo sustituya con los mismo archivos, usuarios, etc.
Carlos | 22-05-2005 12:43:04
Hola,
yo hecho toda la configuración que explicas sobre RSYNC. Pero tengo problemas a la hora de poner practica a todo esto, sobre todo al intentar subir el contenido de un directorio de una maquina local al revidor; parece que se ha hace bien el comando en la maquina local pero cuando pruebo el directorio destino en el servidor no hay nada!
Me ayudarias mucho si explicases más sobre esta tema.
En espera de tu respuesta te mando un saludo.
Patric | 27-05-2005 12:33:06