Cómo hacer copias de seguridad de un sistema Debian usando Backupninja
Última actualización el 19 de septiembre de 2020 por Gabriel Cánepa
La prudencia o la experiencia por desastre pueden enseñar a todos los administradores de sistemas la importancia de realizar copias de seguridad frecuentes del sistema. Puede hacerlo escribiendo buenos scripts de shell antiguos, o usando una (o más) de las muchas herramientas de copia de seguridad disponibles para el trabajo (por ejemplo, Clonezilla, Duplicidad). Por lo tanto, cuantas más herramientas conozca, mejores decisiones informadas tomará al implementar una solución de copia de seguridad.
En este artículo presentaremos Backupninja
, una herramienta de copia de seguridad del sistema ligera y fácil de configurar. Con la ayuda de programas como rdiff-backup
, duplicity
, mysqlhotcopy
y mysqldump
, Backupninja ofrece funciones de copia de seguridad comunes, como copias de seguridad remotas, seguras e incrementales del sistema de archivos, copias de seguridad cifradas y copias de seguridad de bases de datos MySQL/MariaDB. Puede habilitar selectivamente los informes de estado de correo electrónico y también puede hacer copias de seguridad de la información general del hardware y del sistema. Una fortaleza clave de Backupninja es un asistente integrado basado en consola (llamado ninjahelper
) que le permite crear fácilmente archivos de configuración para varios escenarios de copia de seguridad.
La desventaja, por así decirlo, es que Backupninja requiere que se instalen otros programas auxiliares para aprovechar al máximo todas sus características. Mientras que el paquete RPM de Backupninja está disponible para distribuciones basadas en Red Hat, las dependencias de Backupninja están optimizadas para Debian y sus derivados. Por lo tanto, no se recomienda probar Backupninja para sistemas basados en Red Hat.
En este tutorial, cubriremos la instalación de Backupninja para distribuciones basadas en Debian.
Instalando Backupninja
Ejecute el siguiente comando como root:
# aptitude install backupninja
Durante la instalación, se crearán varios archivos y directorios:
-
/usr/sbin/backupninja
es el principal script de shell de bash. -
/etc/cron.d/backupninja
, de forma predeterminada, indicacron
que ejecute el script principal una vez por hora. -
/etc/logrotate.d/backupninja
gira los registros creados por el programa. -
/etc/backup.d/
es el directorio donde residen los archivos de configuración para las acciones de copia de seguridad. -
/etc/backupninja.conf
es el archivo de configuración principal que incluye opciones generales. Está bien comentado y explica cada opción en detalle. -
/usr/share/backupninja
es el directorio donde se encuentran los scripts utilizados por Backupninja (también conocidos como manejadores). Estos son los guiones que se encargan de hacer el trabajo real. En este directorio también encontrará archivos.helper
, que se utilizan para configurar y configurar menúsninjahelper
. -
/usr/share/doc/backupninja/examples
contiene plantillas para archivos de configuración de acciones (el tipo de archivos que se crean a través deninjahelper
).
Ejecutar ninjahelper por primera vez
Cuando intentamos lanzar ninjahelper
, podemos ver que puede ser necesaria una dependencia interna. Si se le solicita, ingrese yes
y presione la tecla ENTER
para instalar dialog
(una herramienta que muestra cuadros de diálogo fáciles de usar de scripts de shell).
Cuando presione Entrar después de escribir sí, Backupninja instalará el diálogo y presentará la siguiente pantalla una vez que haya terminado.
Ejemplo 1: Copia de seguridad de Información de hardware y sistema
Después de iniciar ninjahelper
, crearemos una nueva acción de copia de seguridad:
Si los programas auxiliares necesarios no están instalados, se nos presentarán las siguientes pantallas. No haga caso de este paso si estos paquetes ya se han instalado en su sistema.
El siguiente paso consiste en seleccionar los elementos que desea ser parte de esta copia de seguridad. Los primeros cuatro se seleccionan de forma predeterminada, pero puede deseleccionarlos pulsando la barra espaciadora.
Una vez que haya terminado, presione ACEPTAR para continuar. Podrá elegir si desea utilizar el archivo de configuración predeterminado para esta acción de copia de seguridad (/etc/backup.d/10.sys
), o si desea crear uno nuevo. En este último caso, se creará un nuevo archivo con el mismo contenido que el predeterminado bajo el mismo directorio, pero con el nombre 11.sys
, y así sucesivamente para futuras acciones de copia de seguridad del sistema. Tenga en cuenta que puede editar el archivo de configuración una vez creado con su editor de texto preferido.
Ejemplo 2: Copia de seguridad incremental de extracción de Rsync de un directorio remoto
Como es muy probable que sepa, rsync
se usa ampliamente para sincronizar archivos y carpetas a través de una red. En el siguiente ejemplo discutiremos un enfoque para tomar copias de seguridad incrementales de un directorio remoto con enlaces duros para guardar datos históricos y almacenarlos en nuestro servidor de archivos local. Este enfoque nos ayudará a ahorrar espacio y aumentar la seguridad en el lado del servidor.
Paso 1: Escriba un script personalizado en el directorio /etc/backup.d
con el siguiente contenido y chmod
en 600
. Tenga en cuenta que este directorio puede contener, además de archivos de configuración simples, scripts que desea ejecutar cuando se ejecuta Backupninja, con la ventaja de usar variables presentes en el archivo de configuración principal.
# REMOTE USERuser=root# REMOTE HOSThost=dev1# REMOTE DIRECTORYremotedir=/home/gacanepa/# LOCAL DIRECTORYlocaldir=/home/gacanepa/backup.0# LOCAL DIRECTORY WHERE PREVIOUS BACKUP WAS STOREDlocaldirold=/home/gacanepa/backup.1mv $localdir $localdirold# RSYNCrsync -av --delete --recursive --link-dest=$localdirold $host:$remotedir $localdir
En la configuración anterior, la opción --link-dest
de rsync
se usa para vincular archivos sin cambios (en todos los atributos) de $localdir-old
al directorio de destino ($localdir
).
Paso 2: Antes de ejecutar Backupninja por primera vez, el directorio padre (/home/gacanepa
en este caso) está vacío. La primera vez que ejecutamos:
# backupninja -n
Se crea el directorio backup.0
, y más adelante en el proceso su nombre se cambia a backup.1
.
La segunda vez que ejecutamos Backupninja, se vuelve a crear backup.0
y se mantiene backup.1
.
Paso 3: Compruebe que los contenidos de backup.1
son enlaces duros a los archivos de backup.0
comparando los respectivos números de inodo y tamaños de directorio.
Conclusión
Backupninja no es solo una herramienta de copia de seguridad clásica, sino también una utilidad fácil de configurar. Puede escribir sus propios controladores para ejecutar Backupninja según los archivos de configuración individuales ubicados en /etc/backup.d
, e incluso puede escribir ayudantes para ninjahelper
para incluirlos en su interfaz principal.
Por ejemplo, si crea un controlador llamado xmodulo
en /usr/share/backupninja
, ejecutará de forma predeterminada todos los archivos con la extensión .xmodulo
en /etc/backup.d
. Si decide agregar su controlador xmodulo
a ninjahelper
, puede escribir el ayudante correspondiente como xmodulo.helper
. Además, si desea que Backupninja ejecute un script arbitrario, simplemente agréguelo a /etc/backup.d
y estará listo. Consulte este tutorial de Backupninja para obtener detalles sobre la creación de un plan de copia de seguridad personalizado.