Búsqueda de sitios web

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 realizar 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.

Es importante destacar que conserva subdirectorios, archivos de desarrollo, enlaces físicos y atributos de archivos críticos, como permisos, propiedad de uid/gid, tiempos de modificación, atributos extendidos, ACL y bifurcaciones de recursos. Puede funcionar en un modo que ahorra ancho de banda a través de una tubería, de manera similar a la popular herramienta de copia de seguridad rsync.

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

Dependencias

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

  • Python v2.2 o posterior
  • librsync v0.9.7 o posterior
  • Los módulos Python pylibacl y pyxattr son opcionales pero necesarios para la lista de control de acceso (ACL) POSIX y la compatibilidad con atributos extendidos, respectivamente.
  • rdiff-backup-statistics requiere Python v2.4 o posterior.

Cómo instalar rdiff-backup en Linux

Importante: Si está operando en una red, deberá instalar rdiff-backup en ambos sistemas, preferiblemente ambas instalaciones de rdiff-backup tendrán que ser exactamente iguales. misma versión.

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

Instalar rdiff-backup en Ubuntu

Para instalar Rdiff-Backup en Ubuntu Focal o Debian Bullseye o más reciente (tiene 2.0).


sudo apt-get update
sudo apt-get install librsync-dev rdiff-backup

Para instalar Rdiff-Backup en backports de Ubuntu para versiones anteriores (necesita un backport 2.0).


sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
sudo apt update
sudo apt install rdiff-backu

En CentOS/RHEL 8

Para instalar Rdiff-Backup en CentOS y RHEL 8 (de COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

En CentOS/RHEL 7

Para instalar Rdiff-Backup en CentOS y RHEL 7 (de COPR).


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

En CentOS/RHEL 6


sudo yum install centos-release-scl
sudo yum install rh-python36 gcc libacl-devel
scl enable rh-python36 bash
sudo pip install rdiff-backup pyxattr pylibacl
echo 'exec scl enable rh-python36 -- rdiff-backup "$@"' | sudo tee /usr/bin/rdiff-backup
sudo chmod +x /usr/bin/rdiff-backup

En Fedora

Para instalar Rdiff-Backup en Fedora 32+.


sudo dnf install rdiff-backup

Cómo utilizar rdiff-backup en Linux

Como mencioné antes, 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 copias de seguridad automáticas con scripts y más, deberá configurar el inicio de sesión sin contraseña SSH utilizando claves SSH, porque las claves SSH aumentan la confianza entre dos servidores Linux para facilitar la sincronización o transferencia de archivos.

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

Copia de seguridad de archivos en una partición diferente

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

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

Para excluir un directorio en particular, así como 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 dispositivo, archivos quince, 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 configurar para la selección de archivos; Tamaño --max-file-size que excluye archivos que son más grandes que el tamaño dado en bytes y tamaño --min-file-size 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

Copia de seguridad de archivos remotos en el servidor Linux local

A los efectos de esta sección, utilizaremos:

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

Como dijimos antes, debes instalar la misma versión de rdiff-backup en ambas máquinas, ahora intenta verificar la versión en ambas máquinas de la siguiente manera:

rdiff-backup -V

En el servidor de respaldo, cree un directorio que almacenará los archivos de respaldo de la siguiente manera:

mkdir -p /backups

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

rdiff-backup [email ::/var/log/ /backups/192.168.56.102_logs.backup
rdiff-backup [email ::/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 posterior 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 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 detalle, el valor predeterminado es 3, que es silencioso) para establecer la característica de detalle:

rdiff-backup -v4 [email ::/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/

Automatización de la copia de seguridad rdiff-back usando Cron

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

Y el indicador –remote-schema nos permite especificar un método alternativo para conectarnos a una computadora remota.

Ahora, comencemos creando un script backup.sh en el servidor de respaldo 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 ::/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 al crontab en el servidor de respaldo 192.168.56.10:

crontab -e

Agregue esta línea para ejecutar su script de respaldo diariamente a 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 esté funcionando como se esperaba.

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 Python fácil de usar para copias de seguridad incrementales locales/remotas en Linux. Comparta sus pensamientos con nosotros a través de la sección de comentarios a continuación.