rsync: (0.04) (slink)(potato) Chuleta de uso de rsync (como cliente y como servidor) y ejemplo para hacer copias de seguridad paso a paso 0.03 13/1/01 0.04 6/5/01 Corrijo la linea para inetd.conf (gracias a Luis Miguel) 0.05 29/9/02 Mejoro script para hacer copia de seguridad ¿QUE ES? Sincronización remota de archivos de forma eficiente, transfiriendo solamente las partes que son diferentes (que pueden ser un porcentaje muy pequeño), y ademas las puede comprimir (-z). rsync puede trabajar como cliente y como servidor Ejemplo de usos: Mirror, backup INSTALACION 1) Instalar el paquete rsync - Nada que configurar durante la instalación CLIENTE RSYNC 1) Ver modulos disponibles ("recursos compartidos" con rsync) rsync el.servidor.com:: 2) Listar archivos del modulo rsync -nav --stats --timeout=3600 192.168.0.1::modulo /directorio/vacio EL TRUCO: "-n" muestra los archivos a actualizar, pero sin hacerlo realmente, como el directorio destino está vacio lo muestra *TODO* 3) Transferir todo rsync -av --stats --timeout=3600 192.168.0.1::modulo /directorio/de/destino 4) Transferir un solo directorio rsync -av --stats --timeout=3600 192.168.0.1::modulo/directorio /dir/destino 5) Resumen de opciones: # -n no: no transferir solo mostrar lo que hay que hacer # -a modo archivo (= -rlptDg) # -r recursivo # -l preservar soft links # -p preservar permisos # -t preservar fecha # -D preservar dispositivos (solo root) # -g preservar grupo # -v modo verboso (-vv mas verboso) # -z comprimir (si lo admite el servidor) # -C ignorar archivos como lo hace CVS # -u update: mantiene archivo destino si existe y es posterior # -b backup: renombrar archivos destino preexistentes a extensión ~ # --stats imprimir estadisticas al final (solo si se ha puesto también -v) # --delete borrar archivos en destino si no existen # -R path relativos (crear rutas completas en el destino) 6) Script de ejemplo: ---8<--- #!/bin/sh # Hacer copia de seguridad del home de manel desde otro sistema # rsync -av --stats \ --delete \ --exclude=.Xauthority \ --exclude=nobackup \ servidor-rsync_o_su-IP::restringido /home/manel --->8--- SERVIDOR RSYNC 1) Crear /etc/rsyncd.conf (man rsyncd.conf) Ejemplo: ----8<---- # Ejecuto transferencias como usuario no root uid = nobody gid = nogroup # Y haciendo un chroot al directorio de los datos transferidos use chroot = yes # Permito acceso solo a la red local hosts allow = 192.168.0.0/24 hosts deny = * # Varios max connections = 4 syslog facility = daemon [modulo] path = /home/manel/modulo comment = path accesible por rsync anónimo RO con el nombre "modulo" [restringido] path = /home/manel comment = modulo para copias de seguridad de manel a otro sistema read only = yes auth users = manel secrets file = /etc/rsyncd.secrets uid = manel gid = manel ---->8---- 2) Crear /etc/rsyncd.secrets (solo si empleas "auth users"+"secrets file") Lectura solo por root -> root:root rw-r----- sino da error al autenticar ---8<--- # Archivo de contraseñas para rsync manel:contraseña javier:contraseña --->8--- 3) Lanzar como root (port < 1024 !) preferiblemente desde xinetd.conf para restringir interface, aunque también se puede lanzar como demonio o desde inetd Como demonio: ---8<--- # Servidor rsync rsync --daemon --address 192.168.0.1 --->8--- En inetd.conf (¡no hay restricción de interface!): ---8<--- rsync stream tcp nowait root /usr/bin/rsync rsync --daemon --->8--- - Releer config con /etc/init.d/inetd reload En xinetd.conf: ---8<--- service rsync { socket_type = stream protocol = tcp wait = no user = root server = /usr/bin/rsync server_args = --daemon interface = 192.168.0.1 } --->8--- - Releer config con /etc/init.d/xinetd reload INFORMACION PARA CORTAFUEGOS: (puertos HI = 1024:65535) proto local dir remoto descrip tcp HI <> 873 acceso a servidores rsync externos SEGURIDAD DEL SERVIDOR root: Se precisan los privilegios de root para abrir el puerto privilegiado 873 y para leer el archivo de secretos de rsync pero rync puede cambiar de uid y gid antes de hacer transferencias use chroot: Es posible usar una jaula chroot durante la transmisión de datos, es buena idea... restricción de interface: Es posible con --address autenticación de usuarios: Por medio de un sistema de respuesta a reto que emplea MD4 de 128 bits Cifrado: No cifra las transmisiones, si se requiere cifrado usar un canal ssh MAS INFO: http://rsync.samba.org man rsync man rsyncd.conf