Como ya he dicho, gracias a la entrada de Iñaki en su diario, puse Galeón apuntando a su url, y me he encontrado con
un sistema de backup que colma todas mis necesidades (salvo diferentes cuestiones que ya trataré). La documentación es
extensa y muy bien estructurada, de hecho se escribe antes que el código y es posible encontrar características que todavía
no se han implementado. Todas las tareas que realiza bacula se han modularizado y repartido las tareas entre varios demonios
y servicios y además para los que lo necesiten hay un cliente para win32.
Comprendiendo a bacula
Cuesta cinco minutos comprender el funcionamiento del sistema, gracias a la documentación y a la separación lógica de las
tareas a realizar. La configuración es algo más compleja, pero en realidad no mucho más, y para eso ya estoy yo escribiendo este
artículo. De nada.
Quiero hacer una aclaración, aunque hablo de un sistema de backup en cinta, no quiere decir que unicamente se pueda volcar
en ese tipo de dispositivos, se puede utilizar perfectamente en una red doméstica, o en una sola máquina y grabar los respaldos
en un CD, pero obviamente bacula está orientado a una red más grande y con uno o varios dispositivos de cinta.
Bacula guarda todas sus operaciones,trabajos,listas de volúmenes, etc en una base de datos estilo SQL. Toda la instalación
la he realizado en sistemas debian, salvo algunos clientes, que utilizan otra serie de distribuciones (Red Hat y Mandrake), así que
la instalación de bacula se redujo a un apt-get y el solito me creo las bases de datos necesarias. ¿Como se hace en otras
distribuciones? Ni idea, en las otras me he limitado a configurar los clientes
Bueno, que me enrollo mucho. El sistema se divide en:
- Bacula director
El demonio encargado de gestionar todas las operaciones de backup. El director sabe los trabajos que se van a realizar, cuando
, donde y como. Y además se encarga de restaurar los ficheros que le pidamos y su verificación (una especie de suma de
comprobación de integridad). Se puede instalar en cualquier máquina de la red.
- Bacula File
El cliente. Es necesario instalarlo en todas las máquinas de las que queramos hacer respaldo. Su función es leer y transmitir
los ficheros que el director le pida, o restaurarlos.
- Bacula Storage
Este demonio se encarga de la lectura/escritura física en los volúmenes que estén definidos (cintas, ficheros)
Además tenemos la consola, con la cual nos conectaremos al director, y desde donde podremos dar ordenes, hacer consultas, etc.
Y el catálogo, donde el director guarda y registra todas sus operaciones.
Aclarado esto, conviene también explicar que son los volúmenes y los "pools":
Bacula se refiere a los volúmenes como los dispositivos físicos donde se guardan los volcados (ficheros o cintas)
y a los "pools" como el conjunto de uno o varios volúmenes. Para que quede más claro, nosotros definimos por ejemplo un "pool" que
va a servir para hacer copias diarias de diferentes máquinas, y en ese "pool" añadimos diferentes volúmenes y bacula sabe
cuales volúmenes pertenecen a cada "pool". De esta manera, bacula conoce donde está cada cosa, y de donde sacarla, o bien donde
será necesario escribir cuando el volumen actual esté lleno.
El funcionamiento viene a ser algo así:
El director, que tiene definidos una serie de trabajos y a una determinada fecha y hora se pone en marcha, contacta con el
primer cliente que tiene definido, el cliente de esa máquina comprueba los ficheros o directorios que le pide el director y
le devuelve los que hayan cambiado (si es una copia diferencial o incremental) al director, este se
pone en contacto con el demonio "storage" que almacena en el volumen los ficheros que le mandan, y vuelta a empezar por cada
uno de los clientes. Para un trabajo de verificación viene a ser lo mismo, solo que no se guardan los ficheros, sino solo
las sumas de comprobación en la base de datos SQL que usemos (a día de hoy SQLite, MySQL o PostgreSQL)
Instalación
Aunque ya he comentado, que la instalación a partir de binarios es sumamente fácil, hay que comentar algunas cosas:
- El kernel
Si no viene configurado por defecto (como mi caso) es necesario recompilar el kernel de la máquina que tenga conectado
el dispositivo de cinta con soporte para scsi y cintas:
<*> SCSI support
--- SCSI support type (disk, tape, CD-ROM)
<*> SCSI disk support
(40) Maximum number of SCSI disks that can be loaded as modules
<M> SCSI tape support
Los demonios:
Al trabajar en red, la base datos puede estar en cualquier parte, el director también, los clientes cada uno en su máquina
y el demonio que trata con la cintas en la máquina que tiene las cintas. Mi opinión es no complicarse la vida e instalar
el director, la base de datos y el demonio encargado de grabar datos en la máquina con el scsi de cintas. Y la consola
en el ordenador normal de trabajo (aunque al instalar el cliente en debian, se te instala también la consola)
Entonces tenemos que:
maquina@directora:~#apt-get install bacula-director-mysql bacula-sd
maquina@cliente:~#apt-get install bacula-fd
Una vez que está instalado y configurado, nos ponemos a retocar los ficheros de configuración. Todos los ficheros de
configuración son bastante simples y apenas requieren modificación alguna, salvo el del demonio director que es bastante extenso
y complicadillo. En realidad, en las últimas versiones de bacula se ha simplificado bastante este fichero ya que se ha
implementado un recurso que permite tener definidos una serie de trabajos modelo, que despues se pueden modificar puntualmente
para cada cliente/trabajo. Viene a ser algo parecido a las clases de la programación orientada a objetos. La pena es que en debian
unstable van por la versión 1.32 y la versión upstream es la 1.34, no pudiendose hacer uso de esa característica. A mi me
queda un fichero tal que así:
maquina@directora:~# wc -l /etc/bacula/bacula-dir.conf
1099 /etc/bacula/bacula-dir.conf
Dejamos para la segunda parte la configuración de los ficheros