jueves, 15 de marzo de 2012

Copias de seguridad con Rsync

Unos de los pilares más importantes en el trabajo de un informático es tener una buena estrategia de copia de seguridad y con rsync podremos hacer copias de seguridad en local o remoto en entornos linux y windows.

Para mí rsync es una de las mejores herramientas de backup en linux, como ya veremos es muy versátil, ligero y potente y a la hora de echar mano a los backups podremos acceder a ellos de una forma rápida sin tener que estar restaurando copias ni descomprimiendo archivos ni nada de eso.

Os voy a enseñar un script que he implementado en varios servidores donde he trabajado y de hecho siguen corriendo sin problemas.

Antes vamos a ver la sintaxis básica del comando:

       rsync  /DirOrigen/ /DirDestino/

De esta forma sincronizaremos el directorio destino con lo que halla en el directorio de origen.

-Opciones del comando: 
  • -a: modo archive, esto es lo mismo que poner las opciones rlptgoD juntas, con esto también sincronizamos permisos (-p),los de grupo (-g), el de propietario (ounwer, -o), etc... de esta forma nos es mucho más fácil restaurar la copia.
  • -v: modo vervose, nos irá informando de lo que va copiando.
  • -z: con este parámetro comprime la información en el equipo de origen antes de enviarla por la red y luego la descomprime en local.
  • --delete: Borra de la carpeta de backup los archivos que halla sido borrados en origen.
Con las opciones que hemos visto podemos lanzar el comando con una sintaxis tal que así:

    rsync -azv --delete /DirOrigen  /DirDestino

Y con esto ya nos haría una copia exacta del directorio origen en el destino.

Para copiar un directorio remoto pondríamos la sintaxis igual que para ssh tal que así:

Rsync -azv --delete user@Remoto:/Origen /Destino




-Opciones más avanzadas:
  • -b: modo backup, para poder usar la siguiente opción.
  • --backup-dir: esta es la opción más interesante, con ella podemos crear un directorio con todos los archivos modificados y eliminados en origen, es decir, con --delete borra lo que se halla eliminado en origen pero con esta opción antes de borrar el archivo lo copia en el destino en otra carpeta que hallamos indicado.
  • --exclude-from: aquí añadimos una lista de archivos a excluir a la hora de hacer el backup.
  • --include-from: aquí indicamos una lista de rutas a copiar dentro del destino que le hemos indicado.
Con estas opciones el comando quedaría de la siguiente forma:

fecha=`date '+%F'`

rsync -azbv --delete --backup-dir=Backup_$fecha
--exclude-from=lista_excluir --include-from=lista_incluir
user@Remoto:/ /Destino

Como ya hemos dicho, en Backup_$fecha irá copiando los archivos borrados y modificados en origen con respecto a la copia local. Si nos fijamos vemos que nos conectamos al raiz del servidor remoto ya que con el --include-from indicamos las carpetas a copiar.

-lista_incluir no es más que un archivo con la siguiente estructura:

+ /etc/
+ /etc/samba/***
+ /home/***
+ /var/
+ /var/log/***
+ /var/www/***
- *

De esta forma se copiarían todos los archivos de la carpeta etc pero no las subcarpetas, la carpeta samba se copiaría completa con subdirectorios y demás, igualmente pasaría con home....hasta llegar a  "-*" donde ya para copiar.

Lista_excluir tiene la siguiente estructura:

*.iso
*.bin
*.rpm
*.mp3
*.nrg
*.vmdk
*.vdi
*.vdi.bz2
*.vmdk.bz2

Si hacemos una copia de seguridad del home de los usuarios con todo su correo y descargas pues a lo mejor no nos interesa hacer backup de la música (*.mp3), de software (*.rpm) o de máquinas virtuales (*.vdi).

Si tenemos varios servidores de los que hacer backup se puede hacer un script de cada uno de ellos y ponerlo en el crontab para que se lance por la noche.

Por último, comentar que es importante hacer un seguimiento diario a las copias para ver que se van realizando correctamente y que no se llenen los discos de backup. Otro script que tengo en el crontab es uno para mantener los últimos 30 días de carpetas de archivos eliminados y modificados, la que le hemos dicho a rsync que cree con la estructura de Backup_$fecha:

ls -t RutaLocalBackup | tail -n +30 | xargs rm -rf


Publicar un comentario
Related Posts Plugin for WordPress, Blogger...