Una vez que hemos configurado bacula, podemos comprobar que los ficheros estén correctamente con la opción -t de los tres
demonios:
maquinadirectora:~#bacula-dir -t /etc/bacula-dir.conf
Si tenemos un error en la configuración nos lo dirá. Eso sí, solo nos dirá si el error es de sintaxis. Problemas
de conexión a causa de la red, o errores en los passwords/nombres tendremos que averiguar nosotros la causa.
Arrancalo Carlos, por Dios
Nos vamos a la maquinadirectora y ejecutamos si no estaban ya corriendo:
maquinadirectora:~# /etc/init.d/mysql start
maquinadirectora:~# /etc/init.d/bacula-sd start
maquinadirectora:~# /etc/init.d/bacula-fd start
maquinadirectora:~# /etc/init.d/bacula-dir start
Arrancamos también cada uno de los clientes que vayamos a utilizar, y si todo ha ido bien, en ninguna de
las máquinas habremos obtenido un error. En este momento lo único que puede haner sucedido es que tengamos algún error
sintáctico en alguno de los ficheros, y el demonio se niegue a arrancar. Lo solucionamos y pasamos al siguiente paso, que es
etiquetar las cintas que vayamos a usar y añadirlas a los pools que tengamos definidos. Aquí ya entraría en juego la
estrategía de cada administrador a la hora de establecer una política de backups. Hay que tener en cuenta la importancia
de los datos, la cantidad de cintas que tenemos etc, para organizarlo todo. En la documentación de Bacula hay una sección
referente a ello (que siendo sinceros ni me he mirado) que se supone ayuda a establecer esa política. En mi caso he definido
tres pools: Diaria con copias incrementales, Semanal con copias diferenciales, Mensual con copias completas, y un trabajo
diario de verificación de sumas de los ficheros. Una vez tengamos esto claro y distribuidas las cintas por los diferentes
pools hay que etiquetarlas fisicamente (el cartoncito que llevan pegado a la cinta para distinguirlas nosotros) y por
software para que Bacula las reconozca. Ejecutamos la consola de bacula:
gandalf:~# bconsole
Y obtenemos el promtp del director:
Connecting to Director maquinadirectora.x.com:9101
1000 OK: directora-dir Version: 1.32f-5 (09 Mar 2004)
Enter a period to cancel a command.
*
Desde aqui tenemos pleno control del director y ahora es cuando las podemos etiquetar ejecuntando el comando label
Que nos preguntará por los diferentes dispositivos que tengamos configurados. En este caso, las dos bocas de la unidad de
cintas
The defined Storage resources are:
1: Tape0
2: Tape1
Select Storage resource (1-2):
Enter new Volume name:
Le ponemos un nombre y si no ha sido ya definido previamente, nos preguntará por el nombre del pool al que queremos añadir
la cinta. Una vez se lo facilitemos, bacula lo tendrá marcado para solicitarnoslo cada vez que lo necesite. Repetimos
la operación por cada uno de los volúmenes a utilizar. Una vez terminado ejecutamos list media y nos deberían salir
todos los pools definidos con sus respectivos volúmenes, bytes escritos, última escritura y un sinfín de datos más.
Ya que tenemos esto definido, podemos pasar ahora a comprobar el estado de los diferentes demonios. Si nos hemos conectado
al director es evidente que está en marcha, pero no sabemos mucho de los clientes ni del demonio de almacenamiento. Para esto
utilizamos las ordenes status client y status storage
*status client
The defined Client resources are:
1: cliente1-fd
Connecting to Client cliente1-fd at cliente1.x.com:9102
cliente1-fd Version: 1.32f-5 (09 Mar 2004) i386-pc-linux-gnu debian testing/unstable
Daemon started 30-Apr-04 11:51, 7 Jobs run.
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
======================================================================
40 Sinc 4,463 92,982,884 OK 30-Apr-04 12:03 cliente1-diaria
52 Sinc 532 3,741,110 OK 30-Apr-04 20:03 cliente1-diaria
65 Sinc 3,778 75,600,731 OK 03-May-04 20:04 cliente1-diaria
78 Sinc 2,139 59,748,148 OK 04-May-04 20:04 cliente1-diaria
90 Full 18,689 175,881,481 OK 05-May-04 13:56 cliente1-semanal
91 Sinc 2,109 6,092,577 OK 05-May-04 20:03 cliente1-diaria
114 Sinc 2,347 6,960,272 OK 06-May-04 20:03 cliente1-diaria
Director connected at: 07-May-04 11:54
No jobs running.
Vemos como el cliente funciona y además nos informa de los trabajos realizados hasta la fecha, los ficheros copiados
el tipo de trabajo realizado y si hay alguno en ejecución. Es el momento de hacer la comprobación para cada uno de los clientes.
El comado status admite además los parámetros dir y all.
Si queremos información de la situación de los pools, volumenes, trabajos realizados etc, haremos uso del comando
list por ejemplo:
*list nextvol job=cliente1-diaria
The next Volume to be used by Job "cliente1-diaria" will be Diaria1
Nos informa de cual será el volumen requerido para el proximo trabajo de cliente1-diaria
El comando messages nos mostrará los mensajes que tenga pendiente el director por comunicarnos
aunque también los recibiremos por correo, si así lo tenemos configurado. Otra orden que no podía faltar es help
la cual nos mostrara el juego completo de ordenes y su misión.
Ejecución de los trabajos.
Aunque la manera normal de funcionar de Bacula, es programar la ejecución de los trabajos mediante un calendario. Es
posible ejecutarlos manualmente, para comprobar su correcto funcionamiento. La forma de hacerlo es con el comando run
run
A job name must be specified.
The defined Job resources are:
1: cliente1-diaria
Select Job resource (1): 1
Run Backup job
JobName: cliente1-diaria
FileSet: Diaria
Level: Incremental
Client: cliente1-fd
Storage: tape1
Pool: Diaria
When: 2004-05-07 12:33:28
Priority: 10
OK to run? (yes/mod/no):
En este momento se nos cuestiona si queremos pasar a la ejecución del trabajo, modificar los diferentes parámetros o
su cancelación. Como ya digo es posible alterar los valores que tuvieramos por defecto para ese trabajo si lo hacemos
manualmente. Quizá nos interesara copiar los datos en otra parte, o hacer una copia completa etc.
OK to run? (yes/mod/no): yes
Run command submitted.
*
*status client
The defined Client resources are:
1: cliente1-fd
cliente1-fd Version: 1.32f-5 (09 Mar 2004) i386-pc-linux-gnu debian testing/unstable
Daemon started 30-Apr-04 11:51, 7 Jobs run.
Director connected at: 07-May-04 12:37
JobId 126 Job cliente1-diaria.2004-05-07_12.36.48 is running.
Backup Job started: 07-May-04 12:36
Files=10 Bytes=115,580 Bytes/sec=3,611
Files Examined=1,346
Processing file: /var/cache/locate/locatedb
SDReadSeqNo=5 fd=7
Y comprobamos su ejecución mediante status client.
Recuperando ficheros
Para recuperar ficheros desde las cintas se usa el comando restore, aunque previamente
deberíamos crear un trabajo que cumpla esa funcionalidad. Puesto que no podemos contemplar a priori que necesitamos restaurar
es útil definir un trabajo por defecto y modificar despues cuando nos lo soliciten los valores necesarios, como el cliente, el
fichero o directorio que necesitemos, etc. Despues Bacula nos preguntará a cerca del tipo de restauración que queremos llevar
a cabo, como vereis la lista es extensa:
o select the JobIds, you have the following choices:
1: List last 20 Jobs run
2: List Jobs where a given File is saved
3: Enter list of JobIds to select
4: Enter SQL list command
5: Select the most recent backup for a client
6: Select backup for a client before a specified time
7: Enter a list of files to restore
8: Enter a list of files to restore before a specified time
9: Cancel
Select item: (1-9):
Una vez hecha la selección, Bacula nos preguntará por el cliente y acto seguido por el juego de ficheros (FileSet) definido.
En este momento Bacula realizará una consulta a la base de datos para intentar localizar los trabajos que le hemos pedido, y
nos presenta el prompt $ a la espera de recibir los comandos necesarios para realizar el trabajo de restauración.
Si escribimos help obtendremos una explicación de cuales son estos comando y su cometido.
Una vez que hemos marcado los ficheros o directorio a restaurar, escribimos done y Bacula nos
pedirá los volúmenes donde estén situados esos ficheros. Solicitará confirmación para ejecutar el trabajo presentando las opciones
del trabajo que va a llevar a cabo y una vez lo obtenga empezará con el mismo.
Y con esto doy por finalizado la serie. Aún quedan muchas cosas por contar, pero donde mejor las vais a comprender es
leyendo la documentación que merece la pena. Solo he tratado de dar una visión global del funcionamiento y puesta en marcha
de Bacula, además de que he ido aprendiendo según lo iba configurando, y todavía me queda bastante para tener bajo control todos
los detalles. Si alguien tiene alguna duda, que no tenga reparo en escribirme y le ayudaré en la medida de mis posibilidades.