Hace poco me han pasado la tarea de organizar el proceso de backup para un servidor de coreo. La herramienta elegida para la tarea ha sido
rsync. Me han gustado mucho tres cosas:
- — La posibilidad de usar ssh como el transporte (es decir que no voy a tener otro servicio mas escuchando un puerto adicional. ssh lo tiene todo el mundo).
- — Transferencia cifrada como la consecuencia de uso de ssh
- — Posibilidad de hacer las copias de seguridad incrementares (copiar solo los archivos que se han cambiado desde el backup anterior).
Suponemos que el servidor de backup se llama «backup-server» y el servidor de correo se llama «mail-server». En el servidor de backup hacemos el siguiente script:
/root/bcup.sh
#!/bin/bash
rsync -rc -t -e ssh --rsync-path=/usr/bin/rsync --temp-dir=/tmp user@mail-server:/var/mail /mnt/share/mail
En el servidor de correo creamos el usuario «user» con permisos de leer los archivos relevantes al correo. En el servidor de backup tenemos que configurar el acceso al servidor de correo con usuario «user» usando la autentificación basada en claves.
Para hacer el backup periodicamente añadimos esta linea a /etc/crontab:
8 1 * * * root /root/bcup.sh
Ahora sobre los parámetros de rsync que he utilizado:
-e ssh — usar ssh como el transporte
-f — guardar el tiempo de modificación
-r — copia de seguridad recursiva
-c — usar sumas de control para averiguar si el archivo tiene ser copiado
-rsync-path=/usr/bin/rsync — ruta hasta rsync en la maquina de origen
-temp-dir=/tmp — el directorio para guardar los archivos temporales durante del proceso de backup
user@mail-server:/var/mail — usuario, host, y la ruta hacia el directorio para respaldar
/mnt/share/mail — el directorio en el servidor de backup donde vamos a guardar las copias de seguridad