Implementación de un sistema de backups con Bacula versión 7.4.3 sobre Ubuntu MATE 16.04
Bacula es un sistema de distribuido de gestión de backups en red. Consta de tres componentes llamados Director (Dir), Storage Daemon (SD) y File Daemon (FD).
Bacula Director Daemon
El Director gestiona la programación de los backups (fecha, hora), así como el listado de clientes que requieren de backups, con capacidad incluir ó excluir archivos por su extensión. También se encarga de coordinar la conexión entre los clientes y el Storage Daemons.
Bacula Storage Daemon
El Storage Daemon (SD) se encarga de administrar los medios de almacenamiento en los que se guardan las copias de respaldo. Este componente recibe directamente los archivos que le envía los clientes (File Daemon), y los convierte en backups almacenados en volumenes.
El tercer componente, el File Daemon, es el que finalmente se ejecuta en los clientes (computadores con Windows, Linux y Mac OSX). Este proceso recibe las instrucciones del Director, tales como copiar carpetas y archivos, y enviárselos al SD índicado.
Por ser un sistema distribuido, esta solución puede cubrir tantos clientes como sean necesarios y a tantos Storage Daemons como sean necesarios. Este esquema distribuido no permite un óptimo balanceo de carga en los procesos de backups, que a veces, pueden superar los 800GB en un sólo día. Por lo tanto se recomienda tener una red que opere en lo posible en 1 Gbps, y una buena máquina del lado de los SD.
A manera general, Bacula es una solución de backups en red bastante robusta, completa, flexible y escalable, digna de un ambiente empresarial. Además, por ser un sistema de respaldo de la información, entra perfectamente en el tema de la seguridad informática.
Puede ver un aspecto general sobre la Seguridad Informática, aquí
Instalación de Bacula Director
Te dejo a disposición un comprimido con los instalador de Bacula y sus librerías.
También puedes descargar el instalador del Storage Daemon para plataformas de 32 bits.
Antes de iniciar la instalación, debemos tener preparado el servidor MySQL en la misma máquina. Procedemos a instalar el servidor MySQL:
_# apt-get install mysql-server
Digitamos la contraseña de root de MySQL y la confirmamos:

Configuración de la contraseña de MySQL
La instalación del sistema del lado del Director requiere que los siguientes paquetes estén instalados previamente (se deben instalar en éste orden):
- libssl1.0.2_1.0.2h-1_amd64.deb
- bacula-common_7.4.3+dfsg-7_amd64.deb
- libmysqlclient18_5.6.30-1_amd64.deb
- bacula-common-mysql_7.4.3+dfsg-7_amd64.deb
Luego, debemos instalar dbconfig-mysql con apt-get. Si al hacer éste paso nos sale un error de dependecias incumplidas, lo solucionamos con apt-get install -f
Procedemos con la instalación de bacula-director-mysql_7.4.3+dfsg-7_amd64.deb, aunque si ya lo habíamos tratado de instalar antes el comando apt-get install -f, el sistema nos llevará automáticamente a la siguiente pantalla de configuración:

Inicialización de la Base de Datos de Bacula
En la siguiente pantalla le damos una contraseña nueva para la base de datos de Bacula:

Introducimos la contraseña de root de MySQL para la iniciación de la base de datos para Bacula
La instalación del componente bacula-director-mysql culmina si nos aparece los siguientes mensajes:
granting access to database bacula for bacula@localhost: success verifying access for bacula@localhost: success creating database bacula: success verifying database bacula exist: success populating database via sql… done. dbconfig-common: flushing administrative password
Continuamos con la instalación de bacula-director_7.4.3+dfsg-7_amd64.deb. Si no salen errores de dependencia lo solucionamos con apt-get install -f. Luego, procedemos a instalar el Bacula SD, no sin antes instalar mtx_1.3.12-9_amd64.deb.
Seguidamente procedemos con la instalación del File Daemon, con el paquete bacula-fd_7.4.3+dfsg-7_amd64.deb.
Debo aclarar que la configuración y el máximo provecho de esta herramienta se logra a través de la línea de comandos. Sin embargo, puede usar la interfaz web que ofrece Webmin para una administración más cómoda.
Configuración del Bacula Director
Tal como se ha instalado, los tres componentes quedan dentro de la misma máquina. De manera que el archivo de configuración del Director, Storage Daemon y File Daemon quedan en /etc/bacula.
Vamos a configurar el sistema de tal forma que el Director realice un backup a un cliente y para ciertos tipos de archivos. Abrimos el archivo /etc/bacula/bacula-dir.conf y escribimos las siguientes líneas:
###Declaramos el cliente Client { Name = el-cliente Password = YxBltOwWb5hkES8SME/E9A8sGEPt2UMkYUktCT/K7c/f Address = 192.168.0.57 FDPort = 9102 Catalog = MyCatalog AutoPrune = yes File Retention = 1 months Job Retention = 1 months } ###Declaramos el esquema de archivos y directorios a respaldar (esta parte no accesible por medio de Webmin, se debe hacer directamente en el archivo de configuración) FileSet { Name = WINDOWSVISTA-7 Include { #Archivos que deben ser incluidos en el backup Options { wildfile = "*.accdb" wildfile = "*.odt" wildfile = "*.ods" wildfile = "*.xls" wildfile = "*.docx" wildfile = "*.pdf" wildfile = "*.ppt" signature = MD5 } Options { #Directorios que no deben ser incluidos en el backup Exclude = yes RegexFile = ".*" RegexDir = "AppData" RegexDir = "OneDrive" RegexDir = "Google Drive" RegexDir = "Videos" } File = C:/Users/ } Exclude { #Directorios que no deben ser incluidos en el backup File = C:/Users/Administrador File = C:/Users/Default File = Application Data File = D:/$RECYCLE.BIN } } ###Declaramos el trabajo (job) que realizará el backup al cliente Job { Name = EV-DESPACHOS Type = Backup Level = Full Client = EV-DESPACHOS FileSet = WINDOWSVISTA-7 Schedule = backup-g1 Storage = SD-BK-USERS Pool = Default Messages = Standard } ###Declaramos del Storage Daemon Storage { Name = SD-BK-UTM Password = ZMF-JivJQZFq9LfPQXYe0_FxJ6obqZQfa Address = 192.168.0.74 SDPort = 9103 Device = DV-BACKUP Media Type = File Maximum Concurrent Jobs = 20 } ###Declaramos el trabajo donde definimos el FileDaemon y su carpeta donde restaurarémos las copias de seguridad Job { Name = "RestoreFiles" Type = Restore Client=bk-utm-fd FileSet="Full Set" Storage = SD-BK-UTM Pool = Default Messages = Standard # Where = /nonexistant/path/to/file/archive/dir/bacula-restores Where = /home/perfil/Documentos/RESTAURACION/ RunAfterJob = "chmod ogu+r -R /home/sistemas/Documentos/RESTAURACION/*" }
Configuración del Bacula Storage Daemon
Abrimos el archivo de configuración /etc/bacula/bacula-sd.conf y le configuramos las siguientes líneas:
###Declaramos del Storage Daemon Storage { # definition of myself Name = SD-BK-UTM SDPort = 9103 WorkingDirectory = "/var/lib/bacula" Pid Directory = "/var/run/bacula" Maximum Concurrent Jobs = 20 SDAddress = 192.168.0.74 } Director { Name = director-backups Password = "ZMF-JivJQZFq9LfPQXYe0_FxJ6obqZQfa" } ###Declaramos el medio almacenamiento de los backups en el Storage Daemon Device { Name = DV-BACKUP Archive Device = /media/backups_1 Media Type = File LabelMedia = yes Random Access = yes AutomaticMount = yes RemovableMedia = no AlwaysOpen = yes }
Debemos asegurarnos que el usuario bacula tenga permisos para leer y escribir en el punto de montaje /media/backups_1.
Instalación del Bacula File Daemon
El componente del lado del cliente (File Daemon) podemos usar la versión 5.2.10 que es hasta donde llegó a ser gratuito, y funciona perfectamente. Aunque si usted necesita un File Daemon más actualizado, puede usted usar el File Daemon de Bareos Backup, un fork de Bacula.
Puede ver más sobre Bareos Backup en su página web oficial www.bareos.org
Implementar un segundo Storage Daemon en la red
Implementar un segundo Bacula SD en la red nos permite ampliar la capacidad de almacenamiento de los backups. Entonces, el segundo Storage Daemon lo alojamos en un servidor aparte, adicional, y para ello se necesitan los siguientes paquetes para su instalación:
libssl1.0.2_1.0.2h-1_amd64.debmtx_1.3.12-9_amd64.debbacula-common_7.4.3+dfsg-7_amd64.debbacula-sd_7.4.3+dfsg-7_amd64.deb
Seguidamente entramos al archivo de configuración del segundo Storage Daemon para bautizarlo, y especificarle el medio de almacenamiento que administrará:
##Lo llamamos SD-BK-UTM2
Storage { # definition of myself
Name = SD-BK-UTM2
SDPort = 9103
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/run/bacula"
Maximum Concurrent Jobs = 20
SDAddress = 192.168.0.205
}
###Información de autenticación con el Director
Director {
Name = director-backups
Password = "ZMF-JivJQZFq9LfPQXYe0_FxJ6obqZQfa"
}
###Configuración del medio de almacenamiento que albergará los backups (/media/backups_x)
Device {
Name = DV-BACKUP
Media Type = File
Archive Device = /media/backups_x
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no
AlwaysOpen = yes
Maximum Concurrent Jobs = 5
}
Seguidamente entramos a la configuración del Director para declarar la existencia del segundo SD:
Storage {
Name = SD-BK-UTM2
Password = "ZMF-JivJQZFq9LfPQXYe0_FxJ6obqZQfa"
Address = 192.168.0.205
SDPort = 9103
Device = DV-BACKUP
Media Type = File
Maximum Concurrent Jobs = 20
}
Luego, etiquetamos los nuevos volúmenes que va a processar SD-BK-UTM2:

Etiquetado de volumenes desde Webmin
En el caso de que tengamos varios segmentos de red (VLANs), podemos ajustar a este Storage Daemon adicional para que escuche peticiones para esos segementos adicionales. Por ejemplo, nuestro Storage Daemon adicional tiene dos direcciones IP configuradas en su tarjeta de red: la 192.168.0.205 y la 192.168.150.205. Entonces, la configuración para que atienda solicitiudes en ambas redes, es la siguiente:
Storage { # definition of myself Name = SD-BK-UTM2 WorkingDirectory = "/var/lib/bacula" Pid Directory = "/run/bacula" Maximum Concurrent Jobs = 20 SDAddresses = { ip = { addr = 192.168.0.205; port = 9103 } ipv4 = { addr = 192.168.150.205; port = 9109 } }
Puedes ver cómo configurar VLANs en Linux, aquí:
Ejecutar un proceso de backup
Una vez configurado todo, es muy sencillo ejecutar manualmente un proceso de backups. Para ello, dentro del mismo servidor que funciona como Director, ejecutamos el comando ‘bconsole‘. Esto nos ingresará a la consola CLI de gestión.
Una vez adentro de la consola CLI, ejecutamos el comando run, seleccionamos uno de los trabajos de algún cliente, confirmamos con un YES, y listo:
Detener y reanudar un proceso de backup
Para detener un backup sin cancelarlo se debe ejecutar el comando stop, el comando sugerirá una lista de Jobids a detener. Le ingresamos el Jobid a detener y listo.
Verificamos el estado del proceso de backup de un cliente. Fíjese en el Jobid 213, en la ruta del cliente que se está procesando y en el comando stop:
Para verificar que el Job se haya detenido, más no cancelado, se ejecuta un list jobs y en la columna JobStatus el Jobid debe aparecer con el estado I, de Incompleted. Para reanudar el backup usamos el comando resume. Al ejecutarlo nos mostrará cuatro opciones, seleccionamos la 1 y seguidamente digitamos el Jobid del backup que necesitamos darle continuación:
Para comprobar que el backup ha continuado en el punto de la ruta donde anteriormente se detuvo, ejecutamos un status client=»el-cliente».
Bacula – Restaurar una copia de respaldo
Bacula nos ofrece varias maneras de restaurar las copias de respaldos. La forma más directa es con el JobId de un trabajo de respaldo.
Para recuperar un backup, entramos a la consola de Bacula, bconsole, y ejecutamos el siguiente procedimiento:
– *restore (con opción 3 – Enter list of comma separated JobIds to select)
– Introducimos el número del JobId.
– Seleccionamos el File Daemon que configuramos para restaurar los backups.
– Confirmamos con Yes
Recomendaciones
– El proceso de restauración se puede llevar a cualquier File Daemon, siempre y cuando éste tenga en su sistema de ficheros el directorio o carpeta donde se colocarán los respaldos restaurados. Dicho directorio va declarado en el Director con la opción “Where”.
– Configure los puntos de montaje de los medios de almacenamiento de los backups, con bacula como propietario.
– No instalar bacula FD para Windows de 32 bits en sistema operativo de 64 bits, o no funcionará el VSS, saldrá el error “bacula Fatal error: VSS API failure calling «InitializeForBackup». ERR=Unexpected error”.
– A veces sucede que al comenzar el proceso de backup en un cliente, se queda «pegado» en el siguiente mensaje:
.. the backup job is now running. When complete, the results will be shown below ..
18-may 10:05 director-backups JobId 7520: Start Backup JobId 7520, Job=CLIENT.2020-05-18_10.05.33_27
18-may 10:05 director-backups JobId 7520: Using Device "DV-BACKUP" to write.
Para solucionarlo solo es suficiente reiniciando el Storage Daemon.
Y esto es todo por ahora.
Valora este tutorial





Pingback: 🥇 Cómo programar backups en Linux con Bacula - Python - Bash
Pingback: 🥇 Prevención de ataques informáticos y ransomware