Skip to content

rdiff-backup

https://www.merkasys.com/rdiff-backup-como-hacer-copias-de-seguridad/

backup en cron

/etc/crontab

# Fem el backup incremental a nivell de blocs
25 23 * * * root /usr/bin/rdiff-backup /opt/vimet /mnt/backup/vimet/rdiff > /tmp/rdiff.log 2>&1

# Elimina els backups més antics de dues setmanes
45 22 * * * root /usr/bin/rdiff-backup --remove-older-than 2W /mnt/backup/vimet/rdiff

crear backup

backup local

rdiff-backup /opt/vimet /mnt/backup/vimet/rdiff > /tmp/rdiff.log

a servidor externo

rdiff-backup /home/webs copias@osiris::/backups/webs

Para hacer una copia entre dos servidores:

rdiff-backup usuario1@servidor1::/home/webs usuario2@servidor2::/backups/webs

El siguiente comando copiará por ejemplo /usr/local/bin pero no /usr/bin

rdiff-backup –include /usr/local –exclude /usr / /backups

Ahora queremos copiar todo el sistema excluyendo /proc, /sys, /tmp y /backups:

rdiff-backup –exclude /proc –exclude /sys –exclude /tmp –exclude /backups / /backups
  • Notas: Si elegimos copiar todo el sistema agregar siempre un –exclude con el directorio donde se van a realizar las copias.

Utilizando “extended shell globbing patterns”. Además de los directorios que se excluyen del ejemplo anterior, excluiremos todos los ficheros que terminen en jpg:

rdiff-backup –exclude /proc –exclude /sys –exclude /tmp –exclude ‘**jpg’ –exclude /backups / /backups

Las comillas simples en los ** son muy importantes para que no los interprete la shell.

rdiff-backup también nos da la posibilidad de escribir en un fichero lo que queremos copiar. Para ello necesitamos usar la opción –include-list. Hay que escribir una línea por fichero/directorio. Si el fichero contiene las líneas:

  • /etc
  • /home

Entonces tendremos que ejecutar:

rdiff-backup –include-filelist fichero-list.txt –exclude ‘**’ / /backups

Importante agregar el exclude ‘ para que solo copie lo que hemos indicado en el fichero y excluya el resto. Recordemos que el directorio de origen que indicamos es /.

Con la opción –include-globbing-filelist nos permite indicar un fichero donde podemos escribir patrones. Debemos añadir una línea por patrón pudiendo utilizar el carácter + para indicar las inclusiones y el carácter – para las exclusiones.

  • - **jpg
  • – /home/*/Trash
  • + /etc
  • + /home
  • – **

Con esta configuración excluímos los ficheros que terminen en jpg y la carpeta Trash de todas las carpetas de /home e incluiremos /etc y /home. Para utilizar este fichero ejecutaremos:

rdiff-backup –include-globbing-filelist fichero-list.txt / /backups

Se utiliza la opción –include-globbing-filelist y no –include-filelist para que reconozca los patrones. Si usáramos –include-filelist entendería los * como propios del nombre del fichero.

Antes de terminar este apartado quiero comentar que con la opción –include-globbing-filelist se pueden mezclar líneas con patrones o sin ellos y líneas con exclusiones o sin ellas. Es decir, sin los caracteres + o -:

  • -**jpg
  • – /home/*/Trash
  • – /usr/local/games
  • /usr/local
  • + /etc
  • + /home
  • – **

ver versiones

Queremos sacar un listado de todas las copias realizadas por lo que ejecutaremos:

rdiff-backup -l /directorio/copias

Per veure totes les versions disponibles d’un arxiu

rdiff-backup --list-increments /mnt/backup/vimet/rdiff/templates/user/doc1.txt

Per veure una foto de fa 7 dies de un directori concret

rdiff-backup --list-at-time 7D /mnt/backup/vimet/rdiff/templates/user/

Per veure tots els canvis que hi han hagut els darrers 7 dies a un directori concret

rdiff-backup --list-changed-since 7D /mnt/backup/vimet/rdiff/templates/user/
changed templates/user
deleted templates/user/Plantilla_Fedora.qcow2
new     templates/user/Plantilla_definitiva.qcow2

Con –list-changed-since lista todos los ficheros que han cambiado desde una marca de tiempo:

rdiff-backup –list-changed-since 5D /backups
rdiff-backup –list-changed-since 2011-12-18T09:14:27+01:00 /backups

Con –list-at-time podemos listar todos los ficheros que estuvieron presentes en un determinado backup:

rdiff-backup –list-at-time 5D /backups
rdiff-backup –list-at-time 2011-12-18T09:14:27+01:00 /backups

Y por último, podemos comparar los cambios existentes entre un backup y un directorio en concreto.

Para ello rdiff-backup nos ofrece algunas opciónes como –compare y –compare-at-time. La primera para comparar con el último backup y la segunda para comparar con una marca de tiempo determinada:

rdiff-backup –compare /webs /backups/webs
rdiff-backup –compare-at-time 2011-12-18T09:14:27+01:00 /webs /backups/webs

Restauraciones

El siguiente comando restaura el directorio /backups/webs de la copia realizada el 05 Mayo del 2011 en /tmp/webs:

rdiff-backup -r 2011-05-06 /backups/webs /tmp/webs

La misma recuperación anterior pero desde un servidor remoto:

rdiff-backup -r 2011-05-06 usuario@servidor::/backups/webs /tmp/webs

Recuperación de una copia de hace 5 días:

rdiff-backup -r 5D /backups/webs /tmp/webs

Vamos a utilizar la marca de tiempo obtenido de un listado queriendo recuperar /backups/webs en /tmp/webs del día 20 Diciembre del 2011 a las 23 horas, 00 minutos 01 segundos:

rdiff-backup -r 2011-12-20T23:00:01+01:00 /backups/webs /tmp/webs

Si quisiéramos recuperarlo de un servidor ejecutaríamos:

rdiff-backup -r 2011-12-20T23:00:01+01:00 usuario@servidor::/backups/webs /tmp/webs