rdiff-backup - Una herramienta de copia de seguridad incremental remota para Linux


rdiff-backup es un script Python potente y fácil de usar para copias de seguridad incrementales locales/remotas, que funciona en cualquier sistema operativo POSIX como Linux, Mac OS X o Cygwin. Reúne las características notables de un espejo y una copia de seguridad incremental.

Significativamente, conserva los subdirectorios, los archivos de desarrollo, los enlaces físicos y los atributos de archivos críticos, como los permisos, la propiedad de uid/gid, los tiempos de modificación, los atributos extendidos, las acls y las bifurcaciones de recursos. Puede funcionar en un modo de ancho de banda eficiente en una tubería, de manera similar a la popular herramienta de copia de seguridad rsync.

rdiff-backup realiza una copia de seguridad de un directorio único a otro a través de una red mediante SSH, lo que implica que la transferencia de datos está cifrada y, por lo tanto, segura. El directorio de destino (en el sistema remoto) termina con una copia exacta del directorio de origen, sin embargo, los datos de retroceso adicionales se almacenan en un subdirectorio especial en el directorio de destino, lo que hace posible recuperar archivos perdidos hace un tiempo.

Para usar rdiff-backup en Linux, necesitará los siguientes paquetes instalados en su sistema:

  • Python v2.2 or later
  • librsync v0.9.7 or later
  • pylibacl and pyxattr Python modules are optional but necessary for POSIX access control list(ACL) and extended attribute support respectively.
  • rdiff-backup-statistics requires Python v2.4 or later.

Cómo instalar rdiff-backup en Linux

rojo

El script ya está presente en los repositorios oficiales de las principales distribuciones de Linux, simplemente ejecute el comando a continuación para instalar rdiff-backup, así como sus dependencias:

$ sudo apt-get update
$ sudo apt-get install librsync-dev rdiff-backup
# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
# rpm -ivh epel-release-7-9.noarch.rpm
# yum install librsync rdiff-backup
# wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
# yum install librsync rdiff-backup
# yum install librsync rdiff-backup
# dnf install librsync rdiff-backup [Fedora 22+]

Cómo usar rdiff-backup en Linux

Como mencioné anteriormente, rdiff-backup usa SSH para conectarse a máquinas remotas en su red, y la autenticación predeterminada en SSH es el método de nombre de usuario/contraseña, que normalmente requiere interacción humana.

Sin embargo, para automatizar tareas como las copias de seguridad automáticas con scripts y más, necesitará configurar el inicio de sesión sin contraseña de SSH usando las claves de SSH, ya que las claves de SSH aumentan la confianza entre dos servidores Linux para una fácil sincronización o transferencia de archivos.

Una vez que haya configurado el inicio de sesión sin contraseña de SSH, puede comenzar a usar el script con los siguientes ejemplos.

El siguiente ejemplo realizará una copia de seguridad del directorio /etc en un directorio Copia de seguridad en otra partición:

$ sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup

Para excluir un directorio en particular y sus subdirectorios, puede usar la opción --exclude de la siguiente manera:

$ sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup

Podemos incluir todos los archivos de dispositivos, archivos fifo, archivos de socket y enlaces simbólicos con la opción --include-special-files como se muestra a continuación:

$ sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Hay otros dos indicadores importantes que podemos establecer para la selección de archivos; Tamaño de --max-file-size que excluye archivos que son más grandes que el tamaño dado en bytes y tamaño de --min-size-tamaño que excluye archivos que son más pequeños que El tamaño dado en bytes:

$ sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Para los fines de esta sección, usaremos:

Remote Server (tecmint)	        : 192.168.56.102 
Local Backup Server (backup) 	: 192.168.56.10

Como dijimos anteriormente, debe instalar la misma versión de rdiff-backup en ambas máquinas, ahora intente verificar la versión en ambas máquinas de la siguiente manera:

$ rdiff-backup -V

En el servidor de respaldo, cree un directorio que almacene los archivos de respaldo de esta manera:

# mkdir -p /backups

Ahora, desde el servidor de respaldo, ejecute los siguientes comandos para hacer un respaldo de los directorios /var/log/ y /root desde el servidor remoto de Linux 192.168.56.102 en /backups :

# rdiff-backup [email protected]::/var/log/ /backups/192.168.56.102_logs.backup
# rdiff-backup [email protected]::/root/ /backups/192.168.56.102_rootfiles.backup

La siguiente captura de pantalla muestra el archivo raíz en el servidor remoto 192.168.56.102 y los archivos respaldados en el servidor trasero 192.168.56.10 :

Tome nota del directorio rdiff-backup-data creado en el directorio backup como se ve en la captura de pantalla, contiene datos vitales sobre el proceso de copia de seguridad y los archivos incrementales.

Ahora, en el servidor 192.168.56.102 , se han agregado archivos adicionales al directorio raíz como se muestra a continuación:

Ejecutemos el comando de copia de seguridad una vez más para obtener los datos modificados, podemos usar la opción -v [0-9] (donde el número especifica el nivel de verbosidad, el valor predeterminado es 3, que es silencioso) para establecer la función de verbosidad:

# rdiff-backup -v4 [email protected]::/root/ /backups/192.168.56.102_rootfiles.backup 

Y para enumerar el número y la fecha de las copias de seguridad incrementales parciales contenidas en el directorio /backups/192.168.56.102_rootfiles.backup , podemos ejecutar:

# rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/

Podemos imprimir estadísticas de resumen después de una copia de seguridad exitosa con --print-statistics . Sin embargo, si no configuramos esta opción, la información aún estará disponible en el archivo de estadísticas de la sesión. Lea más acerca de esta opción en la sección ESTADÍSTICAS de la página del manual.

Y la marca –remote-schema nos permite especificar un método alternativo de conexión a una computadora remota.

Ahora, comencemos creando un script backup.sh en el servidor de copia de seguridad 192.168.56.10 de la siguiente manera:

# cd ~/bin
# vi backup.sh

Agregue las siguientes líneas al archivo de script.

#!/bin/bash

#This is a rdiff-backup utility backup script

#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only  /"'  [email protected]::/var/logs  /backups/192.168.56.102_logs.back

#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
        #append error message in ~/backup.log file
        echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
        exit 1;
fi

#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back

Guarde el archivo y salga, luego ejecute el siguiente comando para agregar el script a crontab en el servidor de copia de seguridad 192.168.56.10 :

# crontab -e

Agregue esta línea para ejecutar su script de copia de seguridad diariamente a la medianoche:

0   0  *  *  * /root/bin/backup.sh > /dev/null 2>&1

Guarde el crontab y ciérrelo, ahora hemos automatizado con éxito el proceso de copia de seguridad. Asegúrese de que funciona como se espera.

Lea la página de manual de rdiff-backup para obtener información adicional, opciones de uso exhaustivas y ejemplos:

# man rdiff-backup

Página de inicio de rdiff-backup: http://www.nongnu.org/rdiff-backup/

¡Eso es todo por ahora! En este tutorial, le mostramos cómo instalar y básicamente usar rdiff-backup, un script de Python fácil de usar para copias de seguridad incrementales locales/remotas en Linux. Comparta sus opiniones con nosotros a través de la sección de comentarios a continuación.