Bacula es una colección de herramientas de respaldo capaz de cubrir las necesidades de respaldo de equipos bajo redes IP. Se basa en una arquitectura Cliente-servidor que resulta eficaz y fácil de manejar, dada la amplia gama de funciones y características que brinda; copiar y restaurar ficheros dañados o perdidos. Además, debido a su desarrollo y estructura modular, Bacula se adapta tanto al uso personal como profesional, desde un equipo hasta grandes parques de servidores.

Los componentes de Bacula: generalmente usado en sistemas u organizaciones donde la información es ingresada desde un dispositivo o punto final de red (PC de escritorio), transporta parte de sus datos a un servidor directamente desde la dirección IP. Todo el conjunto de elementos que forman Bacula trabaja en sincronía y es totalmente compatible con bases de datos como MySQL, SQLite y PostgreSQL.

Para la realización del ejercicio utilizaremos 4 maquinas cuyos nombres son backups(debian), barney(debian), homer(ubuntu), lisa(centos) y un volumen en la maquina “barney”

  • Backups – Director y consola
  • Barney – Cliente
  • Homber – Cliente
  • Lisa – Cliente
Info! Nuestras maquinas se van a llamar asi pero el nombre puede variar y la cantidad de maquina con simplemente dos maquinas(un servidor y un cliente) con un volumen podeis realizar las pruebas.

Instalación bacula en backups

En nuestra maquina barney que actuará como director instalaremos previamente la pila LAMP apt install apache2 mysql-server-5.5 mysql-client-5.5 php5 ya que bacula requiere de una base de datos y a continuación bacula apt install bacula bacula-client bacula-common-mysql bacula-director-mysql bacula-sd-mysql bacula-server bacula-traymonitor.

Durante la instalación de bacula nos solicitara que introduzcamos la contraseña del administrador de mysql, para poder acceder a la base de datos y realizar las modificaciones necesarias.

Y observamos que ha creado una nueva base de datos automáticamente

Configurar ciertos servicios o tareas a veces es un proceso largo, tenemos que editar archivos complejos, dedicar mucho tiempo en aprender como funciona una herramienta desde la consola y como configurar sus ficheros, a veces el software de Linux no cuenta con una interfaces de usuario intuitiva que nos facilite el trabajo.

Webmin es una herramienta que permite la configuración del sistema vía Web para sistemas Linux.

Con Webmin podemos configurar y administrar cualquier cosa referente al sistema, herramientas o servicios.

Quizá configurar y controlar en su totalidad Bacula puede ser algo complejo y poco intuitivo ya que no cuenta con una interface gráfica, por ello la mejor opción para facilitarnos el trabajo con Bacula es usar Webmin.

Instalacion webmin

Para descargar webmin accedemos a la Pagina oficial de Webmin y obtener el enlace del paquete debian:

Una vez tenemos el enlace del paquete procederemos a descargarlo, para ello nos situamos en el directorio por defecto de apache cd /var/www/ y descargamos el paquete wget http://prdownloads.sourceforge.net/webadmin/webmin_1.831_all.deb

Una vez finalizada la descarga, vamos instalar el paquete dpkg -i webmin_1.831_all.deb puede dar error al instalar:

En ese caso instalamos las siguientes dependencias apt install libauthen-pam-perl libio-pty-perl apt-show-versions y apt -f install

Y volvemos a instalar el paquete dpkg -i webmin_1.831_all.deb

Y ya podemos acceder [IP_MAQUINA]/

Info! El servidor debe tener una contraseña para el usuario root, que es con el cual debemos acceder sino la tuviera se la asignamos passwd root.

Configuración del director

Por ultimo y para terminar nos queda por configurar el director bacula en nuestra maquina “backups” el cual es el que lleva la mayor parte de la configuración, esto lo configuramos en el fichero /etc/bacula/bacula-dir.conf y hacemos que le fichero quede así:

Instalación de nodo de almacenamiento

Añadimos un volumen a nuestra maquina que hace de director, el cual vamos a particionar fdisk /dev/vdb lo particionamos con una única partición y primaria.

Y le damos un formato “ext4” mkfs.ext4 /dev/vdb1

Lo mas recomendable es asociar este volumen a un directorio concreto en el cual queramos que se almacenen las copias en mi caso crear el directorio mkdir -p /opt/bacula/backup y ha de tener permisos 755 chmod 755 /opt/bacula/backup y como propietario bacula chown bacula:bacula /opt/bacula/backup

Para que siempre se encuentre montado ante cualquier reinicio o apagado, vamos a modificar el fichero /etc/fstab en el cual añadimos la siguiente linea

Info! Podemos observar que en nuestro caso el disco se llama “/dev/vdb1” pero puede tener diferentes nombre dependiendo del entorno.

Montamos la partición creada mount -a y comprobamos que ya se encuentra montada con la salida de lsblk

Con esto ya tendríamos nuestro nodo de almacenamiento preparado para incrustarlo con la configuración de bacula.

Ahora accedemos a la configuración del almacenamiento de bacula /etc/bacula/bacula-sd.conf y editamos los siguientes parámetros para que queden asi:

Info! Es importante no modificar nada mas las partes especificadas arriba sino puede que de fallos al reiniciar el servicio.

Configuración fichero bconsole en backups

Debemos tambien modificar el fichero /etc/bacula/bconsole.conf en el cual vamos a modificar para que quede asi, vuelvo a recordar que las IP’s pueden variar según nuestra red.

Instalación y configuración de los clientes

En nuestras maquinas “barney”, “homer” y “lisa” instalaremos el software de bacula para las maquinas que van a ser respaldadas.

Y configuraremos el cliente instalado en el servidor y en los clientes en el archivo bacula-fd.conf

Ahora procederemos a configurar nuestros clientes de bacula, para configurar el cliente bacula vamos a modificar el fichero /etc/bacula/bacula-fd.conf de cada uno de los clientes.

Backups

En el servidor ya se encuentra instalado por lo paquete que bacula-client no es necsario instalarlo, asi pues, modificamos el fichero /etc/bacula/bacula.fd.conf para que quede asi:

Reiniciamos el servicio systemctl restart bacula-fd

Barney

Instalamos bacula-client en debian apt install bacula-client

Reiniciamos el servicio systemctl restart bacula-fd

Homer

Instalamos bacula-client en ubuntu, al estar en ubuntu xenial el paquete que viene por defecto cuando instalas de los repositorios oficiales es la version “7.0.5” por tanto vamos a descargar los paquete en la version “5.2.6”:

Info! En ubuntu vamos a instalar el paquete 5.2.6 dado que en debian jessie es el que se encuentra estable, en el caso de tener debian strech el paquete es 7.x por tanto es la misma version que se encuentra estable en ubuntu.

Reiniciamos el servicio systemctl restart bacula-fd

Lisa

Instalamos bacula-client en CentOS yum install bacula-client

Reiniciamos el servicio systemctl restart bacula-fd

Y ya tenemos nuestros clientes bacula preparados.

Info!En la configuración de Barney vimos una directiva “FDAddress = 127.0.0.1” si observamos esta directiva no viene configurada en “Homer” si se omite esta directiva por defecto viene configurado para que escuche en todas las interfaces de red “0.0.0.0”.
Danger! Desde el punto de vista de seguridad esto es un problema, pero al estar en un entorno de prueba no debemos preocuparnos, si fuera en un entorno real deberíamos apuntar la direccion ip de la maquina que funciona como director.

Comprobamos que puertos están escuchando, y filtramos por el puerto que escucha bacula netstat -putan | grep 9102

Y reiniciamos todos los servicios correspondientes en la maquina backups:

Acceso mediante webadmin

Para ello una vez instalado el paquete, vamos a acceder mediante la ip de la maquina https://[IP_Maquina]:10000, una vez ahi nos dirigimos a System> Bacula Backup System, no pedirá que configuremos la Base de Datos, que esta en “mysql” y cuya contraseña nos pidió al principio de la instalación del paquete bacula-director-mysql

Añadimos los clientes y podemos ver que ya los tenemos añadidos

Añadir volumen en bconsole

Bacula nos proporciona una consola “bconsole” la cual nos permite gestionar muchas de las funcionalidades de bacula tanto la gestión de volúmenes como llevar a cabo un seguimiento de las copias programadas el estado etc…

Previamente y para que las copias funcionen correctamente deberemos desde la consola asociar el volumen de nuestro nodo de almacenamiento a bacula para que este lo reconozca como tal.

Hacer copia de seguridad programadas

Y ya podemos observar que se han realizado las copias y se encuentran programadas para mañana las nuevas copias incrementales:

Borrar backups o restore desde bconsole

Para borrar las copias de seguridad realizadas mal o por error ejecutamos bconsole y ejecutamos un list jobs y podremos observar las copias realizadas.

Para eliminar bastara con poner delete jobs nos solicitara el id del jobs y se eliminara:

Copia de seguridad de ficheros de configuración

Ahora procedemos a añadir una nueva tarea para realizar la copia de los ficheros de configuración también para ello añadiremos lo siguiente justo detrás de la tarea descrita antes:

Y ya se encuentran programadas:

Al pasar un rato ya podemos observar que se han realizado las copias:

Restaurar copias de seguridad

Primero definimos los nuevos Jobs:

Vamos a restaurar desde bconsole asi podemos seleccionar o un fichero o una carpeta, una vez dentro de “bconsole” escribimos restore presionamos en la opcion 5 y seleccionamos el cliente y definimos el FileSet:

Una vez ahi ya podremos interaccionar como si fuera una shell, podemos ejecutar cd, ls, aqui dejo los comandos que puedes utilizar:

Por lo tanto una vez seleccionado el cliente y seleccionado el FileSet nos movemos por los directorios en los cuales tenemos realizado el backup.

En la maquina cliente Homer vamos a eliminar un fichero de la carpeta /home/ubuntu, por ejemplo los paquetes descargados para instalar el cliente bacula rm -rf bacula-client_5.2.6+dfsg-9.1ubuntu3_all.deb.

En la ultima copia de seguridad dicho paquete esta presente, por tanto ahora solo tendremos que marcarlo y restaurarlo:

Y podemos observar que en la maquina “homer” se ha restaurado el paquete eliminado anteriormente: