Rdiff-backup: Herramienta para realizar backups

1
16556

Índice de contenidos

1. Introducción

Hace tiempo en el tutorial “Backup Manager: Herramienta de backup en sistema Linux” os mostramos una de las herramientas que podemos utilizar para realizar backup en sistema Unix. A pesar de ser una herramienta muy interesante, siempre se le puede encontrar alguna deficiencia, como el excesivo consumo de disco cuando se mantienen varias copias completas, o la lentitud de recuperación de algún fichero cuando trabajamos con backups de gran tamaño (5GB).

Parte de los problemas encontrados en backup-manager se resuelven con la herramienta que os mostramos en este tutorial. rdiff-backup nos ayuda a realizar copias de seguridad de nuestro sistema de ficheros tanto local como remoto (usando ssh), combinando las mejores características de un mirror y el backup incremental.

rdiff-backup es capaz de realizar una copia casi exacta del directorio origen, preservando toda la información de los recursos: permisos, usuarios y grupos, fecha de modificación, enlaces simbólicos, ficheros fifos, etc., manteniéndola independientemente de la plataforma y sistema de ficheros donde se almacene, gracias a que toda esa información se guarda en ficheros independientes de metadatos. Además seremos capaces de recuperar una foto exacta de un determinado día, restaurando el estado que en ese momento tenía nuestro directorio (fichero eliminados, modificados, etc..).

Otra característica importante es la eficiencia del espacio usado. Los backups incrementales que utilizan herramientas como backup-manager, realizan una copia completa de los recursos modificados, en cambio, rdiff-backup sólo almacena las fracciones de datos que realmente han cambiado.

El backup de recursos remotos es otro de sus puntos fuertes y que considero importante destacar. La transferencia de recursos remotos esta optimizada; sólo se transfiere por la red la información que realmente ha cambiado, haciendo un uso eficiente del ancho de banda. El único requisito es que en la máquina remota también se encuentre instalado rdiff-backup.

diff-backup lo podemos ver como el hermano open source de la herramienta Time Machine de Apple. Su funcionamiento es muy similar, pero eso sí, con una interfaz menos atractiva.

2. Entorno

Entorno utilizado para escribir este tutorial:

  • Sistema Operativo: Ubuntu Server 64 bits
  • Kernel: 2.6.35-22
  • rdiff-backup: 1.2.8

3. Instalación

rdiff-backup está disponible en todas las distribuciones de Linux. En nuestro caso, al disponer de un sistema operativo basado en Debian, utilizaremos el comando apt-get para su instalación. Como root ejecutamos:

apt-get update
apt-get install rdiff-backup

Para comprobar que se ha instalado correctamente ejecutamos:

rdiff-backup –version

4. Trabajando con rdiff-backup

4.1. Realizando Backups

Realizar copias de seguridad con rdiff-backup es realmente sencillo, es como si estuviéramos usando el comando cp de Linux. Únicamente tendremos que indicar el directorio origen (del que se quiere realizar el backup) y el directorio destino (donde se almacenará el backup).

rdiff-backup dir_ori dir_dest

Podemos encontrarnos varios escenarios posibles dependiendo de donde se encuentren situados los directorios origen y destino.

  • directorio origen local y destino local
  • directorio origen remoto y destino local
  • directorio origen local y destino remoto

Independientemente de cada caso su uso es idéntico, sólo cambia la forma de acceder a los directorios remotos. Por ejemplo, el comando que deberíamos lanzar para realizar un backup de nuestro directorio local /home/autentia al directorio destino /mnt/backup situado en la misma máquina sería:

rdiff-backup /home/autentia /mnt/backup

Si alguno de los dos directorios estuviese en una máquina remota deberíamos hacer preceder al directorio del usuario y el nombre de la máquina. Por ejemplo, vamos a imaginar que queremos realizar el backup del directorio /etc de la maquina benji (utilizando el usuario backup para acceder a la máquina) al directorio /mnt/backup/benji de nuestra máquina local. El comando que deberíamos ejecutar sería:

rdiff-backup backup@benji::/etc /mnt/backup/benji

Obviamente, para que este comando funcione, deberemos tener configurada correctamente nuestra máquina para acceder al otro equipo sin necesidad de contraseña. Para saber cómo se hace os recomiendo que os leáis el tutorial “ Cómo hacer ‘scp’ de varios ficheros sin que nos pida la password cada vez

Si accedemos al directorio de backup y listamos su contenido, veremos que además de los ficheros existe un directorio llamado “rdiff-backup-data”. En él se almacena información para el correcto funcionamiento de rdiff-backup; concretamente, se almacenan los backup incrementales y la metainformación de los ficheros (permisos, usuarios y grupos, etc..).

Tenemos que tener muy claro que en el directorio de backups siempre tendremos la última versión de los ficheros de la última ejecución. Si quisiéramos acceder al estado del fichero de una fecha en concreto deberíamos acceder a “rdiff-backup-data/increments” que es donde rdiff-backup almacena las versiones anteriores de los ficheros a lo largo del tiempo.

4.2. Restaurando ficheros

Restaurar una copia de seguridad hecha con rdiff-backup es muy sencillo. Podremos utilizar los comandos cp o rdiff-backup. La posibilidad de utilizar cp existe porque rdiff-backup no comprime o realiza un procesamiento especial de los ficheros origen, sino que mantiene la misma estructura y permisos de la original.

Aunque podamos usar cp lo recomendable es utilizar rdiff-backup porque nos aporta muchas más posibilidades de restauración que cp.

El proceso de restauración es muy similar al de backup; únicamente tendremos que añadir la opción -r (restore-as-of) junto con la marca de tiempo a restaurar, el directorio donde se encuentra el backup y el directorio donde queremos que se restaure.

El formato de la marca de tiempo es bastante potente; podremos indicar por ejemplo que nos restaure la copia de hoy usando la palabra “now”, restaurar la copia de hace 10 días usando “10D” o incluso indicarle los minutos y segundos “5m4s”.

Por ejemplo, el siguiente comando restaura el directorio home de la copia realizada el 10 de Enero de 2010 en /tmp/home.

rdiff-backup -r 2010-01-10 /mnt/backup/home /tmp/home

Otro ejemplo, restauramos la copia actual situada en la máquina remota benji en el directorio /temp.

rdiff-backup -r now backup@benji::/mnt/backup /temp

4.3. Eliminando Backup antiguos

Aunque rdiff-backup intenta maximizar el espacio almacenando sólo los ficheros que han cambiado, puede que en determinadas circunstancias necesitemos liberar espacio.

La opción –remove-older-than nos permitirá realizar este proceso. Al igual que la opción de restauración, tendremos que indicarle una marca del tiempo a partir de la cual borrará los backup incrementales.

Por ejemplo, si queremos eliminar de nuestro directorio de backup las versiones de los ficheros con más de 2 semanas deberíamos ejecutar:

rdiff-backup –remove-older-than 2W /mnt/backup

4.4. Filtrado de ficheros

Algunas veces no queremos realizar una copia de seguridad de todos los ficheros. rdiff-backup proporciona varias opciones que nos permiten filtrar los recursos que serán copiados: –include, –include, –include-filelist, –exclude-filelist, –include-globbing-filelist, etc..

De todas ellos sólo vamos a ver el más importante –include-globbing-filelist, porque nos va a permitir usar patrones.

Con include-globbing-filelist le indicamos a rdiff-backup el fichero que contiene el listado de directorios que serán copiados. Debemos añadir una línea por cada patrón, pudiendo tener los signos – y + que indican cuales serán eliminados o añadidos respectivamente.

Vamos a verlo con un ejemplo. Supongamos que queremos hacer un backup de los directorios /etc, /opt y /home pero no queremos copiar ni los directorios .m2 ni nobackup de los directorios de los usuarios. Lo primero nos creamos un fichero llamado files_backup.txt con el siguiente contenido.

 

Ejecutamos:

rdiff-backup –include-globbing-filelist files_backup.txt / /mnt/backup

4.5. Recuperación de información de los backups

También con rdiff-backup podremos obtener mucha más información de los backup.

Por ejemplo con la opción -l podremos obtener el listado con los cambios incrementales de un fichero:

rdiff-backup -l /mnt/backup/file

Con –list-changed-since podremos saber cuántos ficheros han cambiado desde una marca de tiempo en concreto. Por ejemplo con el siguiente comando estamos viendo que ficheros han cambiado en los últimos 10 días.

rdiff-backup –list-changed-since 10D /mnt/backup/etc

–list-at-time lista todos los ficheros que estuvieron presentes en un determinado momento. Esto incluye tanto fichero eliminados como aquellos que no han sido modificados.

rdiff-backup –list-at-time 5D /mnt/backup/home

Y por último podremos comparar los cambios producidos entre el backup y un directorio en concreto. rdiff-backup proporciona dos opciones –compare y –compare-at-time; este último para poder comparar con una marca de tiempo determinada. Por ejemplo:

rdiff-backup –compare /home /mnt/backup/home
rdiff-backup –compare-at-time 2W /home /mnt/backup/home

5. Conclusiones

El uso de herramientas como rdiff-backup es de vital importancia. La información es un elemento importante en el día a día de cualquier empresa. Desde Autentia (www.autentia.com), recomendamos realizar copias de seguridad que reduzcan en la medida de lo posible la pérdida de información debida a cualquier tipo de fenómeno adverso.

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here