bacula

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:

bacula

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:

bacula

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:

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.deb 
mtx_1.3.12-9_amd64.deb 
bacula-common_7.4.3+dfsg-7_amd64.deb 
bacula-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:

bacula

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í:

Agregar una VLAN en Linux

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:

bacula

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:

bacula

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

Bacula
5,0 rating based on 12.345 ratings
Overall rating: 5 out of 5 based on 1 reviews.
Nombres
Email
Titulo
Calificanos
Contenido

Esto es otro nivel

★★★★★
“ Excelente”
- Alirio Nuñez
Comparte esto en
Publicado en Backups.