Búsqueda de sitios web

Rsnapshot (basado en Rsync): una utilidad de copia de seguridad del sistema de archivos local/remoto para Linux


rsnapshot es una utilidad de copia de seguridad del sistema de archivos local/remoto de código abierto escrita en lenguaje Perl que aprovecha el poder de < programaRsync y SSH para crear copias de seguridad incrementales programadas de sistemas de archivos Linux/Unix, ocupando solo el espacio de una única copia de seguridad completa más las diferencias y mantenga esas copias de seguridad en un disco local en un disco duro diferente, en una memoria USB externa , una unidad montada en NFS o simplemente a través de la red a otra máquina a través de SSH.

Este artículo demostrará cómo instalar, configurar y utilizar rsnapshot para crear creaciones incrementales por horas, diarias, semanales y < copias de seguridad locales fuertes>mensuales, así como copias de seguridad remotas. Para realizar todos los pasos de este artículo, debes ser usuario root.

Paso 1: Instalar Rsnapshot Backup en Linux

La instalación de rsnapshot usando Yum y APT puede diferir ligeramente si estás usando Red Hat y Distribuciones basadas en Debian.

En RHEL/CentOS

Primero tendrás que instalar y habilitar el repositorio de terceros llamado EPEL. Siga el enlace a continuación para instalar y habilitar en sus sistemas RHEL/CentOS. Los usuarios de Fedora no requieren ninguna configuración de repositorio especial.

  1. Instalar y habilitar el repositorio EPEL en RHEL/CentOS 6/5/4

Una vez que haya configurado todo, instale rsnapshot desde la línea de comando como se muestra.

yum install rsnapshot
En Debian/Ubuntu/Linux Mint

De forma predeterminada, rsnapshot se incluye en los repositorios de Ubuntu, por lo que puedes instalarlo usando el comando apt-get como se muestra.

apt-get install rsnapshot

Paso 2: Configurar el inicio de sesión sin contraseña SSH

Para realizar copias de seguridad de servidores Linux remotos, su servidor de copia de seguridad rsnapshot podrá conectarse a través de SSH sin contraseña. Para lograr esto, necesitará crear claves públicas y privadas SSH para autenticarse en el servidor rsnapshot. Siga el enlace a continuación para generar claves públicas y privadas en su servidor de respaldo rsnapshot.

  1. Cree un inicio de sesión SSH sin contraseña usando SSH Keygen

Paso 3: Configurar Rsnapshot

Ahora necesitarás editar y agregar algunos parámetros al archivo de configuración rsnapshot. Abra el archivo rsnapshot.conf con el editor vi o nano.

vi /etc/rsnapshot.conf

Luego cree un directorio de respaldo, donde desea almacenar todas sus copias de seguridad. En mi caso, la ubicación de mi directorio de respaldo es “/data/backup/”. Busque y edite el siguiente parámetro para configurar la ubicación de la copia de seguridad.

snapshot_root			 /data/backup/

También descomente la línea “cmd_ssh” para permitir realizar copias de seguridad remotas a través de SSH. Para descomentar la línea, elimine el “#” delante de la siguiente línea para que rsnapshot pueda transferir sus datos de forma segura a un servidor de respaldo.

cmd_ssh			/usr/bin/ssh

A continuación, debe decidir cuántas copias de seguridad antiguas desea conservar, porque rsnapshot no tenía idea de con qué frecuencia desea tomar instantáneas. Debe especificar cuántos datos guardar, agregar intervalos para conservar y cuántos de cada uno.

Bueno, la configuración predeterminada es bastante buena, pero aun así me gustaría que habilitaras el intervalo “mensual” para que también puedas tener copias de seguridad a más largo plazo. Edite esta sección para que se parezca a la configuración siguiente.

#########################################
          BACKUP INTERVALS            #
Must be unique and in ascending order #
i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

Una cosa más que necesitas editar es la variable “ssh_args”. Si ha cambiado el puerto SSH predeterminado (22) por otro, deberá especificar ese número de puerto de su servidor de respaldo remoto.

ssh_args		-p 7851

Finalmente, agregue los directorios de respaldo locales y remotos que desea respaldar.

Directorios locales de respaldo

Si ha decidido hacer una copia de seguridad de sus directorios localmente en la misma máquina, la entrada de copia de seguridad se vería así. Por ejemplo, estoy haciendo una copia de seguridad de mis directorios /tecmint y /etc.

backup		/tecmint/		localhost/
backup		/etc/			localhost/
Copia de seguridad de directorios remotos

Si desea hacer una copia de seguridad de los directorios de un servidor remoto, debe indicarle a rsnapshot dónde está el servidor y qué directorios desea respaldar. Aquí estoy haciendo una copia de seguridad del directorio “/home” de mi servidor remoto en el directorio “/data/backup” en el servidor rsnapshot.

backup		 [email :/home/ 		/data/backup/

Lea también:

  1. Cómo hacer una copia de seguridad/sincronizar directorios usando la herramienta Rsync (sincronización remota)
  2. Cómo transferir archivos/carpetas usando el comando SCP
Excluir archivos y directorios

Aquí, excluiré todo y luego solo definiré específicamente lo que quiero respaldar. Para hacer esto, necesita crear un archivo de exclusión.

vi /data/backup/tecmint.exclude

Primero obtenga la lista de directorios de los que desea hacer una copia de seguridad y agregue ( – * ) para excluir todo lo demás. Esto solo hará una copia de seguridad de lo que usted incluyó en el archivo. Mi archivo de exclusión es similar al siguiente.

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

Usar la opción de excluir archivos puede ser muy complicado debido al uso de la recursividad rsync. Por lo tanto, es posible que mi ejemplo anterior no sea lo que estás buscando. Luego agregue el archivo de exclusión al archivo rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Finalmente, casi ha terminado con la configuración inicial. Guarde el archivo de configuración “/etc/rsnapshot.conf” antes de continuar. Hay muchas opciones para explicar, pero aquí está mi archivo de configuración de muestra.

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		[email :/home/ 		/data/backup/

Todas las opciones anteriores y explicaciones de argumentos son las siguientes:

  1. config_version 1.2=Versión del archivo de configuración
  2. snapshot_root=Destino de copia de seguridad para almacenar instantáneas
  3. cmd_cp=Ruta para copiar el comando
  4. cmd_rm=Ruta para eliminar el comando
  5. cmd_rsync=Ruta a rsync
  6. cmd_ssh=Ruta a SSH
  7. cmd_logger=Ruta a la interfaz de comandos del shell para syslog
  8. cmd_du=Ruta al comando de uso del disco
  9. intervalo por hora=Cuántas copias de seguridad por hora se deben conservar.
  10. intervalo diario=Cuántas copias de seguridad diarias se deben conservar.
  11. intervalo semanal=Cuántas copias de seguridad semanales se deben conservar.
  12. intervalo mensual=Cuántas copias de seguridad mensuales se deben conservar.
  13. ssh_args=Argumentos SSH opcionales, como un puerto diferente (-p)
  14. detallado=Se explica por sí mismo
  15. loglevel=Se explica por sí mismo
  16. logfile=Ruta al archivo de registro
  17. exclude_file=Ruta al archivo de exclusión (se explicará con más detalle)
  18. rsync_long_args=Argumentos largos para pasar a rsync
  19. lockfile=Se explica por sí mismo
  20. copia de seguridad=Ruta completa hacia lo que se va a realizar una copia de seguridad seguida de la ruta relativa de ubicación.

Paso 4: verificar la configuración de Rsnapshot

Una vez que haya terminado con toda la configuración, es hora de verificar que todo funcione como se esperaba. Ejecute el siguiente comando para verificar que su configuración tenga la sintaxis correcta.

rsnapshot configtest

Syntax OK

Si todo está configurado correctamente, recibirá un mensaje "Sintaxis correcta". Si recibe algún mensaje de error, significa que debe corregir esos errores antes de ejecutar rsnapshot.

A continuación, realice una prueba en una de las instantáneas para asegurarse de que estamos generando resultados correctos. Tomamos el parámetro "por hora" para realizar una prueba utilizando el argumento -t (prueba). El siguiente comando mostrará una lista detallada de las cosas que hará, sin realmente hacerlas.

rsnapshot -t hourly
Salida de muestra
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

Nota: El comando anterior le indica a rsnapshot que cree una copia de seguridad “cada hora”. De hecho, imprime los comandos que ejecutará cuando lo ejecutemos realmente.

Paso 5: ejecutar Rsnapshot manualmente

Después de verificar sus resultados, puede eliminar la opción "-t" para ejecutar el comando realmente.

rsnapshot hourly

El comando anterior ejecutará el script de copia de seguridad con toda la configuración que agregamos en el archivo rsnapshot.conf y creará un directorio “backup” y luego creará la estructura de directorios debajo de él. que organiza nuestros archivos. Después de ejecutar el comando anterior, puede verificar los resultados yendo al directorio de respaldo y enumerar la estructura del directorio usando el comando ls -l como se muestra.

cd /data/backup
ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

Paso 6: Automatizar el proceso

Para automatizar el proceso, debe programar la ejecución de rsnapshot en determinados intervalos desde Cron. De forma predeterminada, rsnapshot viene con un archivo cron en “/etc/cron.d/rsnapshot”, si no existe, cree uno y agregue las siguientes líneas.

De forma predeterminada, las reglas están comentadas, por lo que debe eliminar "#" al frente de la sección de programación para habilitar estos valores.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly
30     3     * * *    root    /usr/bin/rsnapshot daily
0      3     * * 1    root    /usr/bin/rsnapshot weekly
30     2     1 * *    root    /usr/bin/rsnapshot monthly

Permítanme explicar exactamente qué hacen las reglas cron anteriores:

  1. Se ejecuta cada 4 horas y crea un directorio cada hora en el directorio /backup.
  2. Se ejecuta diariamente a las 3:30 am y crea un directorio diario en el directorio /backup.
  3. Se ejecuta semanalmente todos los lunes a las 3:00 a. m. y crea un directorio semanal en /backup fuerte> directorio.
  4. Se ejecuta cada mensual a las 2:30 am y crea un directorio mensual en el directorio /backup.

Para comprender mejor cómo funcionan las reglas cron, le sugiero que lea nuestro artículo que lo describe.

  1. 11 ejemplos de programación cron

Paso 7: Informes Rsnapshot

La rsnapshot proporciona un pequeño e ingenioso script Perl de informes que le envía una alerta por correo electrónico con todos los detalles sobre lo que ocurrió durante la copia de seguridad de sus datos. Para configurar este script, debe copiarlo en algún lugar bajo “/usr/local/bin” y hacerlo ejecutable.

cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl

A continuación, agregue el parámetro “–stats” en su archivo “rsnapshot.conf” a la sección de argumentos largos de rsync.

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

Ahora edite las reglas crontab que se agregaron anteriormente y llame al script rsnapreport.pl para pasar los informes a la dirección de correo electrónico especificada.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email 

Una vez que haya agregado las entradas anteriores correctamente, recibirá un informe en su dirección de correo electrónico similar al siguiente.

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

Enlaces de referencia

  1. página de inicio de rsnapshot

Eso es todo por ahora, si ocurre algún problema durante la instalación, envíeme un comentario. Hasta entonces, estad atentos a TecMint para obtener más artículos interesantes sobre el mundo del código abierto.