rdiff-backup: Copias de seguridad eficaces e incrementales

Noviembre 2016


Características de rdiff-backup


rdiff-backup es un programa para hacer copias de seguridad. Permite hacer una copia espejo de un directorio y guardarlo en otro (al igual que rsync o el comando cp).
  • Además, conserva las versiones antiguas de los ficheros, lo que permite restaurar un fichero tal como estaba en una fecha anterior, o recuperar los ficheros borrados.
  • rdiff-backup permite hacer una copia de seguridad hacia/desde un directorio local, o hacia/desde un servidor ssh.
  • rdiff-backup únicamente hace una copia de seguridad de las modificaciones efectuadas en los ficheros.
  • La sintaxis es simple y es posible filtrar los ficheros a respaldar.
  • rdiff-backup permite también guardar las copias de seguridad en sistemas de ficheros que no soporten la gestión de permisos Unix/Linux.


La copia de seguridad más reciente es una copia espejo del directorio de origen.
Los backups de las versiones precedentes únicamente contienen las modificaciones efectuadas en los ficheros en relación al backup anterior.

A continuación veremos un resumen de los principales comandos:

Instalación


Bajo Debian: sudo aptitude install rdiff-backup

Hacer una copia de seguridad


rdiff-backup /source /backups
  • La copia de seguridad de la ultima versión de nuestros ficheros se encuentran en /backups.
  • El directorio /backups/rdiff-backup-data contiene las diferencias con las versiones anteriores de los ficheros.

Listar las copias de seguridad disponibles


rdiff-backup -l /backups
(--list-increment-sizes permite ver el espacio ocupado por cada copia de seguridad)

Eliminar las antiguas copias de seguridad


Por ejemplo, eliminar todas las copias de seguridad con más de 7 días de antigüedad:
rdiff-backup --remove-older-than 7D --force /backups

Restaurar


Por ejemplo para recuperar un fichero /source/mifichero.txt como estaba hace 3 días y guardarlo en /source/antiguo.txt:

rdiff-backup -r 3D /backups/mifichero.txt /source/antiguo.txt

(-r de "restore”; 3D = 3 Days = 3 días. También podemos especificar la hora, minutos, e incluso una fecha precisa. Ver la documentación)

Otras opciones


Existen muchas otras opciones como filtrar los ficheros (por nombre, ruta, tamaño, etc.), restaurar directorios enteros en fechas precisas, hacer copias de seguridad mediante ssh, etc.
Ejecutar man rdiff-backup para listar las opciones.

Algunos programas utilizan rdiff-backup para efectuar los backups (backupninja, slbackup...), pero nada nos impide de poner simplemente el comando rdiff-backup en el crontab para automatizarlo, o ponerlo en un script shell para ejecutarlo en un par de clics.

Ejemplo de automatización


Aquí un ejemplo; Vamos a hacer una copia de seguridad diaria de las carpetas personales (/home) y guardarlas en /var/rdiff.backups/home, conservando 30 días de historial de ficheros. Excluiremos los ficheros con más de 50 MB de tamaño.

Como usuario root creamos el fichero /etc/cron.daily/rdiff_backup_home conteniendo:
#!/bin/bash
test -x /usr/bin/rdiff-backup || exit 0
logger "rdiff_backup_home: Eliminación de antiguos backups (>30 días)"
/usr/bin/rdiff-backup --remove-older-than 30D --force /var/rdiff.backups/home
logger "rdiff_backup_home: Backup del directorio /home (únicamente ficheros <50MB)."
/usr/bin/rdiff-backup --max-file-size 50000000 /home /var/rdiff.backups/home
logger "rdiff_backup_home: Fin del backup."


Convertimos este fichero en ejecutable: chmod 755 rdiff_backup_home

Y listo!

En adelante, se hará una copia de seguridad diaria de las carpetas en /home
rdiff-backup permitirá recuperar las antiguas versiones de los ficheros hasta con 30 días de antigüedad.
  • Para forzar una copia de seguridad, escribimos: sudo /etc/cron.daily/rdiff_backup_home
  • Para listar las copias de seguridad efectuadas, escribimos: sudo rdiff-backup -l /var/rdiff.backups/home
  • Para restaurar un fichero, ejemplo: sudo rdiff-backup -r 3D /var/rdiff.backups/home/toto/mifichero.txt /home/toto/antiguo.txt


Para ver si la copia de seguridad se ha desarrollado correctamente vemos en /var/log/syslog. Escribimos: grep rdiff /var/log/syslog

Ver también


Otros programas para hacer backups


rsnapshot permite también hacer copias de seguridad incrementales, pero no utiliza rdiff y la menor modificación en un fichero le hace copiar el fichero entero. Por lo tanto rsnapshop consume más espacio en disco que rdiff-backup. Además rsnapshot requiere que el sistema de ficheros en el que es hecha la copia de seguridad soporte los permisos Posix. (Esto no es necesario con rdiff-backup).

Consulta también :
El documento «rdiff-backup: Copias de seguridad eficaces e incrementales» de CCM (es.ccm.net) se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo siempre y cuando respetes las condiciones de dicha licencia y des crédito a CCM.