miércoles, 22 de junio de 2011

Montar servidor para copias de seguridad con rsync (I)

Bueno pues la idea en este caso era montar un servidor en una red sin salida a internet, para realizar copias de seguridad de otros pc's de la red. Para ello utilizo 1 pc AMD athlon 900Mhz con 512mb de ram y 2 discos duros 1 de 40 Gb para el sistema y otro de 140Gb para los "backups".
Como SO le he instalado debian 6.0 (Squeeze), pero esto funcionaria en cualkier sistema derivado como ubuntu o mint.
Lo primero que vamos a hacer es instalar rsync en nuestro sistema para ello en un terminal root:
apt-get install rsync
bien ahora vamos a configurar el servidor rsync con la configuración que deseemos para las copias de seguridad. Para ello deberemos editar o crear el archivo /etc/rsync.conf, un ejemplo seria el siguiente
uid = nobody
gid = nogroup
secrets file = /etc/rsyncd.pass
max connections = 40
[backup1]
uid = user
gid = user
path = /home/user/backups
comment = Copias para user
auth users = user
read only = false
log file = /var/log/rsync/rsync_backup1.log
post-xfer exec = mv /var/log/rsync/rsync.log /var/log/rsync/`date +%y-%m-%d`_rsync_backup1.log
Expliquemos un poco que es cada parte de este archivo:
Las 4 primeras lineas son parámetros globales, y especifican que no hay usuario ni grupo, el path del archivo de contraseñas "secrets file = /etc/rsyncd.pass" y el máximo numero de conexiones que se admiten "max connections = 40". El usuario y el grupo lo definiremos luego en cada sección de rsync. Esto puede venir bien si tenemos diferentes usuario en el sistema, de esa manera cada usuario guardara la copia de sus archivos, con sus privilegios.
[backup1]
aquí indicamos un nombre para el directorio virtual de rsync. en este caso "backup1"
uid = user
gid = user
aquí indicamos el usuario y grupo para los archivos que se van a escribir en este directorio virtual, uid para el usuario y gid para el grupo.
path = /home/user/backups
Aquí indicamos el directorio del sistema donde se copiaran lo archivos
comment = Copias para user
Un comentario sobre el directorio virtual, este aparecerá cuando pidamos información sobre los directorios a rsync
auth users = user
El nombre de usuario para autentificarse en la sesión de rsync, luego configurarémos las contraseñas.
read only = false
Inidicámos que el sistema NO es de solo lectura. Podemos indicar que sea de solo lectura "read only = true" si solo queremos que se lean los archivos. Lo mismo podríamos hacer para la escritura, es decir crear un sistema de SOLO escritura, para ello pondríamos "write only = true"
log file = /var/log/rsync/rsync_backup1.log
indicamos donde se genera el fichero con el log una vez que se ha ejecutado la sincronización de este directorio virtual
post-xfer exec = mv /var/log/rsync/rsync.log /var/log/rsync/`date +%y-%m-%d`_rsync_backup1.log
con "post-xfer exec = "podemos realizar una accion una vez que se realice la sincronización, es esta caso he hecho que renombre el fichero del log, para anteponerle la fecha de creación, con el formato año-mes-día.
Si queremos mas de un directorio virtual en rsync para diferentes usuarios no tendremos mas que crear mas secciones como esta en el archivo "/etc/rsync.conf".

Ahora nos quedaría indicar la/s contraseña/s de acceso para el/los usuario/s, para ello creamos el archivo "/etc/rsycd.pass" en el que indicaremos el nombre de usuario y la contraseña con el siguiente formato:
user:12345
donde "user” es el nombre de usuario para rsync y "12345" seria la contraseña. Si tenemos mas usuario y contraseña los indicaremos en una nueva linea del mismo archivo, por ejemplo:
user:12345
pepe:qwerty
juan:as323ddff32qqa

Bien pues una vez tengamos configurado el servidor de rsync vamos a activarlo como servicio para que se arranque cada vez que se inicie el sistema, para ello editamos el archivo "/etc/default/rsync" y cambiamos
RSYNC_ENABLE=false
por
RSYNC_ENABLE=true
Ahora cada vez que se inicie el pc se iniciara el demonio de rsync para que este disponible para el resto de pc's de la red.

Con esto ya tenemos una copia de los ficheros que queramos en el servidor, las nuevas copias solo escribirán los cambios, por lo que nos puede costar el realizar la primera copia pero a partir de ahi las nuevas "sincronizaciónes" solo enviaran los cambios.

Ya solo nos quedaría programar la compresión de los directorios sincronizados, una vez a la semana o al mes, indicando la fecha en la que se realiza asi como el apagado automático del pc tras un periodo desde que se inicia, para poder usar dicho sistema de copias de seguridad de manera transparente y desatendida para los usuarios de la red, y evitando así que el pc este 24h en funcionamiento, así como la configuración de clientes (tanto linux como windows) pero eso ya lo dejo para la siguiente entrega.