sábado, 3 de agosto de 2013

IMPLEMENTANDO BACULA

: Introducción

Antes de comenzar con la instalación y configuración del Bacula, en el caso que lo montemos en una Distribución basada en REDHAT, debemos cercioranos que las librerías que se detallan estén instaladas:
  • gcc
  • gcc-c++
  • libstdc++
  • Mysql o Postgresql
Echo este chequeo podemos compilar el source de bacula.

En este ítem la instalación esta referida para dos distribuciones de Linux:
  • RedHat/CentOS
  • Debian/Ubuntu

: Aspectos principales

Antes de empezar debemos saber que siempre exiten dos formas de instalacion:

La primer opcion es a travez de los archivos source (tar.gz), los cuales se deben compilar y luego instalar (configure, make y make install ) y la segunda opcion y la “recomendada” es por medio de los repositorio del sistema operativo.

Aqui trataremos de explicar las dos opciones, ya que cada una de ellas tiene su ventaja y desventaja.

:: Ventajas

Instalacion por Source
  • Ultima Version
  • Compilacion personalizada

Instalacion por Repositorio
  • Actualizacion rapida y facil
  • Instalacion binaria

:: Desventaja:

Instalacion por Source
  • Se debe recompilar la aplicacion cada vez que necesitamos actualizar
Instalacion por repositorio
  • No suele tener la ultima version release, y en casos como debian tiene varias versiones mas viejas.

Pero tenemos una tercera opcion que es un mix entre compilar y repositorios, que seria tratar de instalar los archivos compilados y si nos pidiese instalar alguna libreria extra hacerso desde los repositorio directamente, asi nos aseguramos una instalacion limpia y correcta, ademas de poderlas ir actualizando sin problemas cuando sea necesario.

: Instalación

:: Instalacion por source de Bacula


Aqui vamos a utilizar las dos opciones, para instalar la base de datos, lo haremos a travez del repisotorio, pero la instalacion de bacula lo hacemos compilando e instalando.

::: Intalacion de Bacula en REDHAT/CentOS con MySQL


Para la instalación de la ultima versión de Bacula estable debemos bajar el paquete tar desde la pagina oficial de Bacula: www.bacula.org.

La instalación en REDHAT/CentOS debe tener la siguiente características para su configuración:

1.- Mysql instalado, si no lo esta, deberemos instalar los siguientes paquetes:

yum install mysql.x86, mysql-server y mysql-devel

2.- Asegurarse que no falten las librerías gcc, gcc-c++, libstdc++

yum install gccXX gccXX-c++ libstdc++ libstdc++XX-devel (chequear siempre la ultima versión de las librerías)

Ahora bien, instalado lo referido en los puntos 1 y 2, procederemos a descomprimir el paquete tar en el path: /usr/local/src, luego crearemos un script que lo llamaremos "cfgure.sh" y lo copiamos dentro del directorio del Bacula, este script configurara, compilara e instalara al director de bacula automáticamente a continuación transcribo el script propuesto :

CFLAGS="-g -O2 -Wall" \
./configure \
--sbindir=/home/bacula/bacula/bin \
--sysconfdir=/home/bacula/bacula/bin \
--with-pid-dir=/home/bacula/bacula/bin/working \
--with-subsys-dir=/home/bacula/bacula/bin/working \
--enable-smartalloc \
--with-mysql \
--with-working-dir=/home/bacula/bacula/bin/working \
--with-dump-email=bacula@sudominio.com.ar \
--with-job-email=bacula@sudominio.com.ar \
--with-smtp-host=mail.sudominio.com.ar \
--enable-tray-monitor \
--enable-readline \
make
make install

::: Intalacion de Bacula en Debian/Ubuntu con MySQL

1.- Liberia mínima necesaria para compilar el paquete tar:
  • Instalar Mysql en primer lugar.
  • Librerías del sistema operativo.

Mysql:
apt-get install mysql-server-5.1

Librerias:
apt-get install gcc-4.5 gcc binutils-doc gcc-4.5-locales gcc-multilib autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.4-multilib libmudflap0-4.4-dev gcc-4.4-doc gcc-4.4-locales libgcc1-dbg libgomp1-dbg libmudflap0-dbg gcc-4.5-multilib libmudflap0-4.5-dev gcc-4.5-doc binutils-gold glibc-doc automake g++-4.4 libstdc++6-4.4-dev g++-multilib g++-4.4-multilib libstdc++6-4.4-dbg libstdc++6-4.4-doc lib32stdc++6-4.4-dbg

2.- Luego creamos el siguiente archivo ejecutable que lo llamaremos cfgure.sh, este script configurara, compilara e instalara al director de bacula automáticamente. Esta configuración lo va instalar bajo la home del usuario que este utilizando para bacula (en este caso bajo bacula)

CFLAGS="-g -O2 -Wall" \
./configure \
--sbindir=$HOME/bacula/bin \
--sysconfdir=$HOME/bacula/bin \
--with-pid-dir=$HOME/bacula/bin/working \
--with-subsys-dir=$HOME/bacula/bin/working \
--enable-smartalloc \
--with-mysql \
--with-working-dir=$HOME/bacula/bin/working \
--with-dump-email=bacula@sudominio.com.ar \
--with-job-email=bacula@sudominio.com.ar \
--with-smtp-host=mail.sudominio.com.ar \
--enable-tray-monitor \
--enable-readline \
make
make install

:: Instalacion por repositorio de Bacula

Como dijimos en aspectos generales debemos tener en cuenta que esta opción instala una versión de bacula anterior. Y aqui tambien repetimos el proceso de instalacion, primero la base de datos y luego el bacula.

::: Bacula sobre Ubuntu 12.04 LTS

:::: Base de datos:

apt-get install mysql-server-5.5

:::: Bacula:

apt-get install bacula-client bacula-common bacula-common-mysql bacula-console bacula-director-common bacula-director-mysql bacula-fd bacula-sd bacula-sd-mysql bacula-server bacula-traymonitor

::: Bacula sobre Ubuntu 10.10

:::: Base de datos:

apt-get install mysql-server-5.1

:::: Bacula:

apt-get install bacula-client bacula-common bacula-common-mysql bacula-console bacula-director-common bacula-director-mysql bacula-fd bacula-sd bacula-sd-mysql bacula-server dbconfig-common libpython2.6 bacula-doc bacula-traymonitor mt-st resolvconf myspell-en-us myspell-es

::: Bacula sobre Debian 6.0

apt-get install bacula-client bacula-common bacula-common-mysql bacula-console bacula-director-common bacula-director-mysql bacula-fd bacula-sd bacula-sd-mysql bacula-server bacula-doc bacula-traymonitor

::: Bacula sobre Debian 6.0 con Postgresql

Para una correcta instalación debemos instalar en primer lugar la base de datos y luego el software de bacukp:

  • Postgresql-8.4
  • Bacula

Instalamos el postgresql desde los repositorio:
apt-get install postgresql-8.4 postgresql-contrib-8.4 postgresql-client-8.4 postgresql-pltcl-8.4 postgresql-plperl-8.4 postgresql-doc-8.4 libdbd-pg-perl openssl-blacklist tclreadline uuid

Instalamos el bacula:
apt-get install bacula-server bacula-common-pgsql bacula-director-pgsql bacula-console bacula-sd-pgsql bacula-fd bacula-doc bacula-traymonitor

: Configuración

:: Configuración del Director (bacula-dir.conf)

En la configuración del Director debemos tener en cuenta tres archivos de configuracion

  • bacula-dir.conf
  • bacula-sd.conf
  • bacula-fd.conf

Para entender un poquito la configuración del director (bacula-dir.conf), es un archivo maestro que maneja el storage, y los clientes.
Pero con solo este archivo no podremos hacer que bacula guardes los volumen físicamente, pare ellos necesitamos del daemon storage que utiliza el archivo de configuración bacula-sd.conf, y en este se indica el lugar donde debe escribir los volúmenes y por ultimo es el archivo de configuracion del file deamon (bacula-fd,conf) que establece entre el servidor de bacula y el servidor a backupear.
El archivo que configura el director se llama bacula-dir.conf, aquí se declara el director, storage, monitor, clientes y mensajes que enviá el bacula avisando las novedades que ocurren con los backups. Este archivo según la forma de instalacion que hayamos decidido tendra una ubicacion particular, osea, si nuestra instalacion fue por source se encontrara donde se definio en el script presentado:

CFLAGS="-g -O2 -Wall" \
./configure \
--sbindir=$HOME/bacula/bin \
--sysconfdir=$HOME/bacula/bin \
--with-pid-dir=$HOME/bacula/bin/working \
--with-subsys-dir=$HOME/bacula/bin/working \

La opcion de configure --sysconfdir nos permite definir donde encontraremos los archivos de configuracion del bacula, en este caso esta en el mismo directorio que los archivos binarios: $HOME/bacula/bin. Para el caso de la instalacion por repositorio los archivos de configuracion ya esta definido su instalacion en /etc/bacula (Debian/Ubuntu). Este ejemplo muestra las diferencias de una instalación echa con el paquete tar, a través del script "cfgure.sh" y la instalacion por repisotorio.

::: Source

Director {
Name = Bacula-Director-1-dir
DIRport = 9101
QueryFile = "/home/bacula/bacula/bin/query.sql"
WorkingDirectory = "/home/bacula/bacula/bin/working"
PidDirectory = "/home/bacula/bacula/bin/working"
Maximum Concurrent Jobs = 20
Password = "D1r3ct0r1" # Console password
Messages = Daemon
DirAddress = 111.11.111.111
Heartbeat Interval = 1
}

::: Repositorio

Director {
Name = Bacula-Teco-2-dir
DIRport = 9101
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
Password = "b4cvl4t3c02"
Heartbeat Interval = 1
Messages = Daemon
DirAddress = 111.11.111.111
}

Para los demas Storage, Catalog, Messages, Console y Client su configuracion es la misma. Pero explicare que significa cada opcion.

::: Storage:

Define el nombre del demonio de almacenamiento

Storage {
Name = Strg-Raidubuntu
Address = 111.11.111.111
SDPort = 9103
Password = "strgD1r3ct0r1"
Device = "Storage-Raidubuntu"
Media Type = File
}

Name: Definimos un nombre para luego vincularlo en el archivo cliente
Address: Es la direccion IP o DNS del Daemon Storage (Suele estar en el mismo servidor que el Director)
SDPort: Port de comunicion del Storage Daemon.
Password: Password para definir una conexion segura
Device: Nombre del recurso de soporte que utilizamos en el archivo bacula-sd.conf
Media Type: Tipo de Soporte que utilizaremos

::: Catalog

Es donde se define que catalogar, bacula no permite varias conexiones a distintos servidores de base de datos, pero si se puede definir varias bases de datos, por lo tanto aqui encontramos los parametros de conexion a la base de datos.

Catalog {
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
}

Name: Nombre del Catalogo
dbname: Nombre de la base de datos
dbuser: Usuario de la base con privilegios para administrar
dbpassword: Password del usuario de la base

::: Messages

Es fundamental su configuración, debido a que nos permite enterarnos de las acciones que ejecuta, ya sea en forma correcta o incorrecta y para ello utiliza enviando un mail con las novedades que ocurran.

Name: Es el nombre del recurso Messages, el cual se utilizara para atarlo con un Job o Demonio
mailcommand: Este comando nos permite especificar exactamente como enviar el mail
operatorcommand: Este comando es similar al anterior pero nos permite enviarlo al Operador
mail: Aqui definimos el mail, donde enviara las acciones del sistema, el cual sera visto por el administrador
operator: Aqui definimos el mail del operador, el cual recibira las acciones de su perfil
console: Envia el mensaje al bacula console
append: Permite almacenar en un archivo los mensajes que se sucedan
catalog: Envia el mensaje al catalogo de la base de datos, y escribe la tabla Log.
Aca mostramos los dos tipos de configuración del recurso Messages

Messages {
Name = Standard
mailcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\
(Bacula-Director-1\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\
(Bacula-Director-1\) \<%r\>\" -s \"Bacula: Necesita intervención %j\" %r"
mail = su-usuario@.sudominio.com.ar = all, !skipped
operator = su-usuario@.sudominio.com.ar = mount
console = all, !skipped, !saved
append = "/home/bacula/bacula/bin/working/log" = all, !skipped
catalog = all
}

Messages {
Name = Daemon
mailcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\(Bacula-Director-1\) \<%r\>\" -s \"Bacula-Director-1 daemon message\" %r"
mail = su-usuario@sudominio.com.ar = all, !skipped
console = all, !skipped, !saved
append = "/home/bacula/bacula/bin/working/log" = all, !skipped
}

::: Console

Monitor contiene la informacion para poder conectarse al Director, Clientes y Demonios que desea supervisar

Name: Se lo define con el mismo nombre del servidor
Password: Este password es el que se encuentra en el bacula-dir.conf
CommandACL: Permite en esta caso restringir el tray-monitor y obtener asi solo del director

Console {
Name = Bacula-Director-mon
Password = "D1r3ct0r1m0n"
CommandACL = status, .status
}

Como un directorio maneja varios clientes, se podría detallar todo sobre el bacula.conf, pero quedaría muy desprolijo, por eso se utiliza el include (@) para una configuración limpia y entendible, esto lo colocaremos al final del archivo, bacula-dir.conf y lo dirigiremos hacia la carpeta que previamente creamos "client", ejemplo de esto nos quedaría así:

@/home/bacula/bacula/client/Myself.conf (@ : Hace un include de los archivos que le indiquemos)

@/home/bacula/bacula/client/Myself.conf
@/home/bacula/bacula/client/Gta.conf
@/home/bacula/bacula/client/Gtc.conf

Para tener en cuenta:
El bacula-dir.conf tiene tres password, uno es el correspondiente al Director, el cual se configura en los archivos de configuración de las consolas bat.conf y bconsole.conf, el segundo es para conectarse con el storage daemon y el tercer es para el monitor, el cual se utiliza en los archivo (bacula-fd.conf y bacula-sd.conf), pero esto lo veremos en el ítem siguiente con mas detalles.

  • El primero es el Password del Director que esta en la cabecera del archivo
  • El Segundo password corresponde al Storage Daemon.
  • El tercer es la Consola, es para que los client puedan ser monitoreados por el Director

:: Configuracion del FileDaemon (bacula-fd.conf)

Se instala en los Servidores a Backupear, es el cliente que permite la conexión con el servidor, algunos tip's con respecto al "lenguaje" del archivo de configuración bacula-fd.conf:

::: Password del Client (ej: Mail.conf)

Director {
Name = Bacula-Director-1-dir
Password = "ClientMail"
}

::: Password de Console

Director {
Name = Bacula-Director-1-mon
Password = "D1r3ct0r1m0n"
Monitor = yes
}

Como ejemplo veremos el bacula-fd.conf del Bacula-Director-1, bacula-fd.conf:
Director {
Name = Bacula-Director-1-dir
Password = "D1r3ct0r1Client"
}

Director {
Name = Bacula-Director-1-mon
Password = "D1r3ct0r1m0n"
Monitor = yes
}

FileDaemon {
Name = Bacula-Director-1-fd
FDport = 9102
WorkingDirectory = /home/bacula/bacula/bin/working
Pid Directory = /home/bacula/bacula/bin/working
Maximum Concurrent Jobs = 20
}

Messages {
Name = Standard
director = Bacula-Director-1-dir = all, !skipped, !restored
}

:: Configuracion del Storage Daemon (bacula-sd.conf)

Algunos tip's con respecto al "lenguaje" del archivo de configuración bacula-sd.conf: Los password correspondientes deben respetar lo declarado en bacula-dir.conf 

::: Pasword de Storage

Director {
Name = Bacula-Director-1-dir
Password = "strgD1r3ct0r1"
}

::: Password de Console

Director {
Name = Bacula-Director-1-mon
Password = "D1r3ct0r1m0n"
Monitor = yes
}

::: Device

Es el que indica donde se alojaran los volúmenes

Device {
Name = Storage-Raidubuntu
Media Type = File
Archive Device = /raid/backups/Raidubuntu
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
}

Como ejemplo veremos el bacula-sd.conf del Bacula-Director-1, bacula-sd.conf:

Storage {
Name = Bacula-Director-1-sd
SDPort = 9103
WorkingDirectory = /home/bacula/bacula/bin/working
Pid Directory = /home/bacula/bacula/bin/working
Maximum Concurrent Jobs = 20
}

Director {
Name = Bacula-Director-1-dir
Password = "strgD1r3ct0r1"
}

Director {
Name = Bacula-Director-1-mon
Password = "D1r3ct0r1m0n"
Monitor = yes
}

Device {
Name = Storage-Raidubuntu
Media Type = File
Archive Device = /raid/backups/Raidubuntu
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
}

Messages {
Name = Standard
director = Bacula-Director-1-dir = all
}

:: Configuración de los Clientes en el Director

Este archivo es la configuracion de los clientes propiamentes dichos, de los cuales se van hacer el backup
Archivo Myself.conf

1.- Nota
     El cliente del Director debe llamarse Myself.conf, el cual incluira:
     a.- Job de los archivos,
     b.- Job del Catalogo del Bacula (Base de datos)
     c.- Job para Restore de los Backups echos por este Director
2.- Cliente del Director
     a.- Clientes: Servers para hacer Backups

Lo que queremos definir son los rescursos del Pool para que reutilize despues de cierto tiempo los volumenes creados y asi el crecimiento de espacio en disco que tengamos no se nos acabe rapidamente. Como veran estan calculados para guardar como maximo un mes de volumenes. Para este caso utilizaremos las plantillas definida en el Anexo "Plantillas de Clientes" donde debemos reemplazar los siguientes valores:

1.- Variables Generales: Variables a cambiar
  • Cambiar la palabra Server
  • En Address = server.senasa.gov.ar
  • En Password = "PPP"
  • En Priority = nn
  • En Schedule = HH:MM
  • En Maximum Volumes = X
  • En Volume Retention = DD days

2.- Pool: Para guardar un histórico de Backups de 2 Semanas

Maximum Volumes = X
Pool --> Full --> Maximum Volumes = 2
Pool -->Diff --> Maximum Volumes = 2
Pool --> Inc --> Maximum Volumes = 8
Volume Retention = DD days
Pool --> Full --> Volume Retention = 10 days
Pool -->Diff --> Volume Retention = 10 days
Pool --> Inc --> Volume Retention = 10 days

Para guardar un histórico de Backups de 3 Semanas
Maximum Volumes
Pool --> Full --> Maximum Volumes = 3
Pool -->Diff --> Maximum Volumes = 3
Pool --> Inc --> Maximum Volumes = 12
Volume Retention = DD days
Pool --> Full --> Volume Retention = 14 days
Pool -->Diff --> Volume Retention = 14 days
Pool --> Inc --> Volume Retention = 14 days

Para guardar un histórico de Backups de 4 Semanas
Maximum Volumes
Pool --> Full --> Maximum Volumes = 4
Pool -->Diff --> Maximum Volumes = 4
Pool --> Inc --> Maximum Volumes = 15
Volume Retention = DD days
Pool --> Full --> Volume Retention = 20 days
Pool -->Diff --> Volume Retention = 20 days
Pool --> Inc --> Volume Retention = 20 days

Para guardar un histórico de Backups de Horarios
Maximum Volumes
Pool --> Full --> Maximum Volumes = 4
Pool -->Diff --> Maximum Volumes = 4
Pool --> Inc --> Maximum Volumes = 365
Volume Retention = DD days
Pool --> Full --> Volume Retention = 15 days
Pool -->Diff --> Volume Retention = 15 days
Pool --> Inc --> Volume Retention = 15 days 

:: Configuración de Bconsole y Bat

::: Introducción

El archivo de configuración para las consolas llevan los mismos parámetros

Bat-->bat.conf
bconsole -->bconsole.conf

Archivo “.conf”
Director {
Name = Bacula-Director-1-dir
DIRport = 9101
address = baculadirector1.tudominio.com.ar
Password = "D1r3ct0r1"
}

Director {
Name = Bacula-Director-2-dir
DIRport = 9101
address = baculadirector2.tudominio.com.ar
Password = "D1r3ct0r2"
}
....

: Administración de Bacula

:: Consola Bconsole:

Ingresando a la consola
Para poder ejecutar al consola textual debemos tener en primer lugar instalado la consola de bacula (archivos: bconsole y bconsole.conf), esta se hace desde los mismo archivos de instalación de Bacula.
Echo esto escribimos en nuestro prompt el comando bconsole y nos entregrar una pantalla de texto como la siguiente:
---------------------------------------------------------
[root@smarcnet ~]# bconsole
Available Directors:
--> 1: Bacula-Director-1-dir at 111.11.111.111:9101
--> 2: Bacula-Director-2-dir at 172.26.160.60:9101
--> 3: Bacula-Director-3-dir at 172.26.160.71:9101
--> 4: Bacula-Director-4-dir at 172.26.160.209:9101
--> 5: bacula-teco-dir at 10.0.48.16:9101
--> 6: Bacula-Teco-2-dir at 111.11.111.111:9101
Select Director by entering a number: 1 <--
---------------------------------------------------------

Seleccionamos el director al cual queremos entrar, colocando el numero que se detalla a la izquierda y tienen una flecha, en el ejemplo de arriba seleccionamos el Bacula-Director-1 al cual entraremos una vez que presionemos el enter.
Estando dentro de la consola podremos ejecutar comandos en la consola, pero antes una salvedad, el asteriscos que se encuentra al final del ejemplo siguiente es el prompt de la consola, lo que nos dice que ya podemos ejecutar algún comando.

---------------------------------------------------------
[root@smarcnet ~]# bconsole
Available Directors:
1: Bacula-Director-1-dir at 111.11.111.111:9101
2: Bacula-Director-2-dir at 172.26.160.60:9101
3: Bacula-Director-3-dir at 172.26.160.71:9101
4: Bacula-Director-4-dir at 172.26.160.209:9101
5: bacula-teco-dir at 10.0.48.16:9101
6: Bacula-Teco-2-dir at 111.11.111.111:9101
Select Director by entering a number: 1
Connecting to Director 111.11.111.111:9101
1000 OK: Bacula-Director-1-dir Versión: 5.0.3 (04 August 2010)
Enter a period to cancel a command.
---------------------------------------------------------

::: Comandos útiles de la consola

Detallo algunos de los comandos que mas se utilizan para la administración:

::: Help:

Muestra la lista de comandos que se pueden correr por consola

*help

Command Description
======= ===========
add: Add media to a pool
autodisplay: Autodisplay console messages
automount: Automount after label
cancel: Cancel a job
create: Create DB Pool from resource
delete: Delete volume, pool or job
disable: Disable a job
enable: Enable a job
estimate: Performs FileSet estimate, listing gives full listing
exit: Terminate Bconsole session
gui: Non-interactive gui mode

::: Status:

Este comando tiene varias formas de emplearse 
Ejecutando simplemtente "status" y nos muestra la siguiente pantalla: 

*status
Status available for:
1: Director
2: Storage
3: Client
4: All
Select daemon type for status (1-4): 1
Ahora intentaremos comprender que nos muestra el comando status:

::: Director:

Muestra los backups que se realizaran, si estan corriendo algún Job y los realizados : Backups a Realizar:
Scheduled Jobs:
Level Type Pri Scheduled Name Volume ================================================================
Incremental Backup 5 18-abr-11 23:05 Backup-Mail Mail-Inc-0408
Incremental Backup 15 18-abr-11 23:15 Backup-Gta Gta-Inc-0410
Incremental Backup 20 18-abr-11 23:20 Backup-Gtc
Incremental Backup 20 18-abr-11 23:25 Backup-Gte Gte-Inc-0412
Full Backup 35 18-abr-11 23:35 Backup-Mesayuda Mesayuda-Full-0004
--------------------------------------------------------------------------------------------------------------------------------------------------
Jobs Corriendo:
Running Jobs:
Console connected at 18-abr-11 16:08
No Jobs running.
====
Backups realizados :
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
==================================================================
669 Incr 105 1.901 G OK 16-abr-11 00:29 Backup-Bacula-Director-1
670 Full 1 2.473 G OK 16-abr-11 00:33 Backup-Catalog-Bacula-Director-1
671 Full 3,386 138.9 G OK 17-abr-11 17:39 Backup-Mail
673 Full 1,057 319.2 G OK 18-abr-11 04:14 Backup-Gta
674 Full 3206 50.19 G OK 18-abr-11 05:57 Backup-Gtc
==================================================================

::: Storage :

Muestra el Storage o los múltiples storage configurados.
Cuando en el Director solo tenemos definido un solo storage nos muestra directamente el log con la información siguiente:
Este caso es cuando no tiene ningún proceso esta ejecutándose, pero en caso contrario donde dice "Running Jobs" y "Used Volume status" nos muestra que jobs y volumen esta usando. 

*status storage
The defined Storage resources are:
1: Strg-Bacula-Director-5
2: Strg-Bacula-Director-5-Horario
Select Storage resource (1-2): 1
Connecting to Storage daemon Strg-Bacula-Director-5 at 172.26.160.102:9103
Bacula-Director-5-sd Versión: 5.0.3 (04 August 2010) x86_64-unknown-linux-gnu redhat
Daemon started 20-abr-11 20:40. Jobs: run=8, running=0.
Heap: heap=471,040 smbytes=298,987 max_bytes=367,203 bufs=122 max_bufs=139
Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8

Running Jobs:
Writing: Full Backup job Backup-BH1-Horario JobId=40 Volume="BH1-Horario-Inc-0011"
pool="BH1-Horario-Inc" device="Strg-Storage-BD5-Horario" (/raid/Horario)
spooling=0 despooling=0 despool_wait=0
Files=25 Bytes=388,632,042 Bytes/sec=2,034,722
FDReadSeqNo=6,134 in_msg=6060 out_msg=5 fd=8
====
Jobs waiting to reserve a drive:
====
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
==================================================================
31 Full 0 0 Cancel 20-abr-11 20:40 Backup-BH1-Horario
33 Full 0 0 Cancel 20-abr-11 20:40 Backup-BH1-Horario
35 Full 904 15.07 G Cancel 20-abr-11 22:42 Backup-BH1-Horario
====
Device status:
Device "Strg-Storage-BD5" (/raid) is not open.
Device "Strg-Storage-BD5-Horario" (/raid/Horario) is mounted with:
Volume: BH1-Horario-Inc-0011
Pool: BH1-Horario-Inc
Media type: File
Total Bytes=388,878,545 Blocks=6,028 Bytes/block=64,512
Positioned at File=0 Block=388,878,544
====
Used Volume status:
BH1-Horario-Inc-0011 on device "Strg-Storage-BD5-Horario" (/raid/Horario)
Reader=0 writers=1 devres=0 volinuse=1
====
*

::: List

Lista los pool, volúmenes y Jobs como lo muestran los siguientes ejemplos:

* list pool
PoolId
Name
NumVols
MaxVols
PoolType
LabelFormat
1
Bacula-Director-5-Full
0
2
Backup
Bacula-Director-5-Full-
2
Bacula-Director-5-Inc
0
8
Backup
Bacula-Director-5-Inc-
3
Bacula-Director-5-Diff
0
2
Backup
Bacula-Director-5-Diff-
4
Bacula-Director-5-Catalogo
0
5
Backup
Bacula-Director-5-Catalogo-
5
BH1-Normal-Full
0
3
Backup
BH1-Normal-Full-

*list pool=Bacula-Director-5-Full
PoolId
Name
NumVols
MaxVols
PoolType
LabelFormat
1
Bacula-Director-5-Full
0
2
Backup
Bacula-Director-5-Full-

*list jobs
JobId Name StartTime Type Level JobFiles JobBytes JobStatus
2 Backup-BH1-Horario 2011-04-18 20:05:02 B F 0 0 f
1 Backup-BH1-Horario 2011-04-18 20:05:03 B F 0 0 f

*list JobId=2
JobId Name StartTime Type Level JobFiles JobBytes JobStatus
2 Backup-BH1-Horario 2011-04-18 20:05:02 B F 0 0 f




*list volume
Pool: Bacula-Director-2-Full
MediaId VolumeName VolStatus Enabled VolBytes VolFiles VolRetention Recycle Slot InChanger MediaType LastWritten
36 Bacula-Director-2-Full-0036 Used 1 624,147,655 0 864,000 1 0 0 File 2011-04-03 18:55:20
44 Bacula-Director-2-Full-0044 Used 1 290,812,520 0 864,000 1 0 0 File 2011-04-17 18:34:48

Pool: Bacula-Director-2-Diff
MediaId VolumeName VolStatus Enabled VolBytes VolFiles VolRetention Recycle Slot InChanger MediaType LastWritten
37 Bacula-Director-2-Diff-0037 Used 1 282,160,775 0 864,000 1 0 0 File 2011-04-14 01:50:54
40 Bacula-Director-2-Diff-0040 Used 1 717,552,834 0 864,000 1 0 0 File 2011-03-17 03:13:46

*list volume=Sdcfile1-Diff-0035
MediaId VolumeName VolStatus Enabled VolBytes VolFiles VolRetention Recycle Slot InChanger MediaType LastWritten
35 Sdcfile1-Diff-0035 Append 1 579,985,782,410 135 1,209,600 1 0 0 File 2011-04-14 00:28:12

::: Messages:

Muestra el mismo mensaje que se detalla en el ítem "Log de correcta realización del Backups" pero ademas muestra los mensajes de error de los backups que no se hicieron por algún motivo.
-------------------------------------------------------------------
*messages

VER ("Log de correcta realización del Backups" )
-----------------------------------------------------------------

::: Restore:

-------------------------------------------------------------------
*restore
First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.
To 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 comma separated 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: Find the JobIds of the most recent backup for a client
10: Find the JobIds for a backup for a client before a specified time
11: Enter a list of directories to restore for found JobIds
12: Select full restore to a specified Job date
13: Cancel
Select ítem: (1-13):
-------------------------------------------------------------------
Este comando es para restaurar backups, en general se utiliza la opcion 5 cuando la cantidad de archivos a recuperar es grande.

La opcion 6 se utiliza para recuperar muchos archivos de una fecha anterior al ultimo Full colocando en el prompt la fecha y la hora como se indica la ayuda que desplegá esta opcion cuando la ejecutamos.

La opcion 3 es para poder recuperar rápidamente archivos de uno o dos días atrás y que sea su cantidad muy pequeña, el único inconveniente es que hay que conocer el JobId, que lo podremos consultar con el comando "list" como se indica en los ejemplos del mismo, luego de hacer esto lo ingresamos colocando el JobId (Que es un numero) y presionamos enter.

Ahora bien si necesitamos dos o mas colocamos los JobId separados por comas y ejecutamos presionando el enter. Una vez que nos da el prompt vamos asía el archivo con "cd" para entrar en los directorios y una vez allí escribimos:

"mark nombrearchvios" , " mark nombredirectorio " o " mark * "

y por ultimo

"done"

sale y nos pregunta si queremos hacerlo le decimos "yes" y ejecuta el restore en el servidor “cliente en el path /var/local/bacula” (Para Linux y Windows) .
Cuando termina chequeamos en el servidor cliente si esta todo bien, y movemos el archivo a su respectivo directorio.
La restauración se hace en otro directorio por seguridad para que no borre ningún archivo.

::: Run:

Con este comando ejecutamos un backup que nos hayan pedido fuera del horario que habitualmente se hacen, o también cuando se traba alguno importante podemos volver a realizarlo (Pero no sera necesario ya que el Bacula esta configurado para que reintente varias veces)

::: . (Punto):

Se utiliza para salir del lugar que estemos sin ejecutar nada (Es como un Cancelar)

::: Cancel :

Cancela los jobs que estan en la cola de procesos, serian aquellos backups que estan en espera de ejecución

::: Reload :

Comando muy útil para cuando agregamos un cliente nuevo a backupear y no podemos bajar el service bacula-director entonces por consola ejecutamos ”reload” y lo que hace es releer los archivos de configuración (*.conf) prune, purge y delete: Comandos que borran los datos del Catalogo (Base de Datos), por lo que se desprende que son utilizados con mucha discreción

::: Prune :

Borra los registros expirados del catálogo
---------------------------------------------------------
*prune
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
You have the following choices:
1: Files
2: Jobs
3: Volume
4: Stats
Choose ítem to prune (1-4): 3 (ej, seleccionamos volume)
Defined Pools:
--> 1: Bacula-Director-5-Full
--> 2: Bacula-Director-5-Inc
--> 3: Bacula-Director-5-Diff
--> 4: Bacula-Director-5-Catalogo
--> 5: BH1-Normal-Full
--> 6: BH1-Normal-Inc
--> 7: BH1-Normal-Diff
Select the Pool (1-10): Cualquier numero indicado por la flecha se debe seleccionar

::: Purge :

Purga los registros del catálogo (Borra los registros en cascada)

-------------------------------------------------------------------------------------------------------------------------------------------------
*purge
This command can be DANGEROUS!!! It purges (deletes) all Files from a Job, JobId, Client or Volume; or it purges (deletes) all Jobs from a Client or Volume without regard to retention periods. Normally you should use the PRUNE command, which respects retention periods.
You have the following choices:
1: files
2: jobs
3: volume
Choose ítem to purge (1-3): 3
Defined Pools:
1: Default
2: Bacula-Director-1
3: Scratch
4: Mesayuda-Full
5: Mesayuda-Inc
6: Mesayuda-Diff
7: Bacula-Director-1-Full
8: Bacula-Director-1-Diff
Select the Pool (1-8):

::: Delete :

Eliminar volúmenes, pools, o Jobs
----------------------------------------------------------------------------------------------------------------------------------------
*delete
In general it is not a good idea to delete either a Pool or a Volume since they may contain data.
You have the following choices:
1: volume
2: pool
3: jobid
Choose catalog ítem to delete (1-3):
---------------------------------------------------------------------------------------------------------------------------------------

::: Label:

Este comando es usado para cambiar el nombre físico del volumen
---------------------------------------------------------
*label
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
Automatically selected Storage: Strg-Bacula-Storage
Enter new Volume name: BH1-Horario-Inc-0532
---------------------------------------------------------

:: Metodo para crear nuevos Label

Este metodo lo empleamos cuando por algun motivo particular, en el momento que bacula busca algun volumen vencido para reescribirlo y no lo encuentra, los que nos lleva a que debamos generar manualmente un nuevo Label para que se ejecute ese job trabado y permita seguir haciendo los backups programados en el schedule.

[claudio@smarcnet ~]$ bconsole
Available Directors:
1: Bacula-Central-1-dir at 172.26.160.209:9101
2: Bacula-Director-2-dir at 172.26.160.60:9101
3: Bacula-Director-3-dir at 172.26.160.71:9101
4: Bacula-Director-4-dir at 172.26.160.202:9101
5: BDPGSQL-dir at 172.26.160.33:9101
6: Bacula-Teco-1-dir at 10.0.48.16:9101
7: bacula-teco-2-dir at 111.11.111.111:9101
8: bacula-teco-3-dir at 10.0.48.201:9101
9: Kurchatovio-dir at 10.0.48.212:9101
Select Director by entering a number: 9
Connecting to Director 10.0.48.212:9101
1000 OK: Kurchatovio-dir Version: 5.2.5 (26 January 2012)
Enter a period to cancel a command.

*mess
29-ene 11:18 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
29-ene 11:23 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
29-ene 11:28 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
29-ene 11:33 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
*
*list Pool=Blade-Hoja13-Inc media

Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
+--------+------------------+---------+---------+----------+-------------------+
| PoolId | Name | NumVols | MaxVols | PoolType | LabelFormat |
+--------+------------------+---------+---------+----------+-------------------+
| 35 | Blade-Hoja13-Inc | 16 | 16 | Backup | Blade-Hoja13-Inc- |
+--------+------------------+---------+---------+----------+-------------------+
+---------+-----------------------+-----------+---------+-------------+----------+--------------+---------+------+-----------+-----------+
| MediaId | VolumeName | VolStatus | Enabled | VolBytes | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten |
+---------+-----------------------+-----------+---------+-------------+----------+--------------+---------+------+-----------+-----------+
| 582 | Blade-Hoja13-Inc-0582 | Used | 1 | 101,926,179 | 0 | 2,160,000 | 1 | 0 | 0 | File | 2013-01-15 12:15:04 |
| 583 | Blade-Hoja13-Inc-0583 | Used | 1 | 138,136,375 | 0 | 2,160,000 | 1 | 0 | 0 | File | 2013-01-15 12:29:44 |
| 597 | Blade-Hoja13-Inc-0597 | Used | 1 | 48,774,324 | 0 | 2,160,000 | 1 | 0 | 0 | File | 2013-01-16 08:52:22 |
| 626 | Blade-Hoja13-Inc-0626 | Used | 1 | 55,392,521 | 0 | 2,160,000 | 1 | 0 | 0 | File | 2013-01-18 12:04:28 |
| 678 | Blade-Hoja13-Inc-0678 | Used | 1 | 59,325,952 | 0 | 2,160,000 | 1 | 0 | 0 | File | 2013-01-27 17:55:50 |
+---------+-----------------------+-----------+---------+-------------+----------+--------------+---------+------+-----------+-----------+
*
*label
Automatically selected Storage: Strg-Kurchatovio
Enter new Volume name: Blade-Hoja13-Inc-0679
Defined Pools:
     1: Bacula-Teco-Full
     2: Bacula-Teco-Diff
     3: Bacula-Teco-Inc
     4: Bacula-Teco-Catalog-Full
     5: Default
     6: Foton-Full
     7: Foton-Diff
     8: Foton-Inc
     .......
    32: Blade-Hoja12-Inc
    33: Blade-Hoja13-Full
    34: Blade-Hoja13-Diff
    35: Blade-Hoja13-Inc

Select the Pool (1-134): 35
Connecting to Storage daemon Strg-Kurchatovio at 10.0.48.212:9103 ...
Sending label command for Volume "Blade-Hoja13-Inc-0679" Slot 0 ...
3000 OK label. VolBytes=240 DVD=0 Volume="Blade-Hoja13-Inc-0679" Device="Storage-Kurchatovio" (/raid/Kurchatovio)
Catalog record for Volume "Blade-Hoja13-Inc-0679", Slot 0  successfully created.
Requesting to mount Storage-Kurchatovio ...
3001 OK mount requested. Device="Storage-Kurchatovio" (/raid/Kurchatovio)
*

:: Cancelando un Job en ejecución desde consola


Para cancelar Job en ejecucion, no podremos hacerlo solo del comando cancel, debemos indicar el jobid que tiene ese proceso.
Para saber el JobId, lo podremos ejecutar de la siguiente manera:

# status client

Seleccionamos el cliente desde la lista y de ahi sacamos el jobid que se esta ejecutando

Y luego tipeamos:

cancel jobid=XXXX

: Problemas Generales

:: Desfasaje de Horario

Como suele defasarse el horario de los baculas servidores, ejecutamos el comando detallado :

ntpdate ntp.senasa.gov.ar (Para los Baculas de casa central)
ntpdate dsdcenter.senasa.gov.ar (Para los  Baculas de Telecom)


Ya que si el desfasa es importante retrasa considerablemente el incio del backup

:: Problemas en los bacukps por defasaje de fecha en el vencimiento del volumen


Chequear diariamente los baculas con el Bat console, si encuentra algun job con la siguiente exprecion proceder como se describe en el mail anterior y que nuevamente detallo en este mail
29-ene 11:08 Kurchatovio-dir JobId 1915: Pruning oldest volume "BH1-Horario-Full-0212"

29-ene 11:13 Kurchatovio-dir JobId 1915: Pruning oldest volume "BH1-Horario-Full-0212"


bconsole
 list Pool=BH1-Horario-Full media esto le va a mostrar el ultimo full  de BH1-Horario osea van a ver

 BH1-Horario-Full-0212 entonces una vez obtenido el ultimo numero hacen

 label

 En este caso deben seleccionar el storage Horario y luego colocar el nombre del nuevo volumen que seria
 BH1-Horario-Full-0213

:: Problemas con Jobs (Exceptuando problemas de vencimiento del volumen)

Si los backups se traban, al ejecutar el comando storage status, nos muestra el siguiente textos:

 bconsole
 *status storage
 The defined Storage resources are:
      1: Strg-kurchatovio
      2: Strg-kurchatovio-Horario
 Select Storage resource (1-2): 1

 Connecting to Storage daemon Strg-kurchatovio at 10.0.48.16:9103

 Bacula-Teco-1-sd Version: 5.2.5 (26 January 2012) x86_64-pc-linux-gnu ubuntu 12.04
 Daemon started 22-Jan-13 11:32. Jobs: run=309, running=0.
  Heap: heap=270,336 smbytes=235,214 max_bytes=366,889 bufs=115 max_bufs=127
  Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8 mode=0,0

 Running Jobs:
 Writing: Incremental Backup job Job-PGSQL-Horario JobId=12859 Volume=""
     pool="PGSQL-Horario-Inc" device="Strgkub-Horario" (/raid/Horario)
     spooling=0 despooling=0 despool_wait=0
     Files=0 Bytes=0 Bytes/sec=0
     FDReadSeqNo=6 in_msg=6 out_msg=4 fd=5
 ====

 Jobs waiting to reserve a drive:
 ====

 Terminated Jobs:
  JobId  Level    Files      Bytes   Status   Finished        Name
 ===================================================================
  12810  Incr          5    67.10 M  OK       28-Jan-13 13:23 Job-BH1-Horario
  12812  Incr         48    771.7 M  OK       29-Jan-13 09:39 Job-BH1-Horario
  12814  Incr         47    754.9 M  OK       29-Jan-13 09:53 Job-BH1-Horario
  12811  Incr         68    168.0 M  OK       29-Jan-13 09:55 Job-PGSQL-Horario
  12813  Incr         68    168.0 M  OK       29-Jan-13 09:57 Job-PGSQL-Horario
  12834  Incr         69    376.9 K  OK       29-Jan-13 09:57 Backup-Bacula-Teco
  12835  Full          1    14.39 M  OK       29-Jan-13 09:58 Backup-Bacula-Teco-Catalog
  12856  Incr          3    33.55 M  OK       29-Jan-13 10:15 Job-BH1-Horario
  12857  Incr          2    2.178 M  OK       29-Jan-13 10:25 Job-PGSQL-Horario
  12858  Incr          3    33.55 M  OK       29-Jan-13 11:15 Job-BH1-Horario
 ====

 Device status:
 Device "Strgkub" (/raid) is not open.
 Device "Strgkub-Horario" (/raid/Horario) is not open.
     Device is BLOCKED waiting to create a volume for:
        Pool: PGSQL-Horario-Inc
        Media type: File
 ====
 Used Volume status:
 ====
 ====
 You have messages.
 *

En el texto detallado lo que nos interesa son dos items:
 Running Jobs: (Al principio del texto)
 Writing: Incremental Backup job Job-PGSQL-Horario JobId=12859 Volume=""
     pool="PGSQL-Horario-Inc" device="Strgkub-Horario" (/raid/Horario)
     spooling=0 despooling=0 despool_wait=0
     Files=0 Bytes=0 Bytes/sec=0
     FDReadSeqNo=6 in_msg=6 out_msg=4 fd=5
 ====

 Device "Strgkub" (/raid) is not open. (Al final del texto)
 Device "Strgkub-Horario" (/raid/Horario) is not open.
     Device is BLOCKED waiting to create a volume for:
        Pool:        PGSQL-Horario-Inc
        Media type:  File
 ====


 Este caso se soluciona creando un nuevo label. Pero si tenemos este otro caso:
 Running Jobs: (Al principio del texto)
 Writing: Incremental Backup job Job-PGSQL-Horario JobId=12859 Volume=""
     pool="PGSQL-Horario-Inc" device="Strgkub-Horario" (/raid/Horario)
     spooling=0 despooling=0 despool_wait=0
     Files=0 Bytes=0 Bytes/sec=0
     FDReadSeqNo=6 in_msg=6 out_msg=4 fd=5
 ====
 Writing: Incremental Backup job Job-PGSQL-Horario JobId=12860 Volume=""
     pool="PGSQL-Horario-Inc" device="Strgkub-Horario" (/raid/Horario)
     spooling=0 despooling=0 despool_wait=0
     Files=0 Bytes=0 Bytes/sec=0
     FDReadSeqNo=6 in_msg=6 out_msg=4 fd=5
 ====

 Device "Strgkub" (/raid) is not open. (Al final del texto)
 Device "Strgkub-Horario" (/raid/Horario) is not open.
     Device is BLOCKED waiting to create a volume for:
        Pool:        PGSQL-Horario-Inc
        Media type:  File
 ====


 Esto se soluciona con el siguiente comando :
 service bacula-sd force-reload

 si esto no lo soluciona, solo en casos extremos reiniciar el servicio de bacula de la siguiente forma
 1° Bajar el bacula-fd: service bacula-fd stop
 2° Bajar el bacula-sd: service bacula-sd stop
 3° Bajar el bacula-director: service bacula-director stop


 Y luego ejecutar con la misma secuencia el inicio
 1° Subir el bacula-fd: service bacula-fd start
 2° Subir el bacula-sd: service bacula-sd start
 3° Subir el bacula-director: service bacula-director start

:: Problemas en la creación de un nuevo label:

::: Caso 1

*label
Automatically selected Storage: Strg-Kurchatovio
Enter new Volume name: Blade-Hoja13-Inc-0679
Media record for new Volume "Blade-Hoja13-Inc-0679" already exists.

::: Caso 2

Volume name must be at least one character long.
Enter new Volume name: Blade-Hoja13-Inc-0680
Defined Pools:
1: Bacula-Teco-Full
2: Bacula-Teco-Diff
3: Bacula-Teco-Inc
4: Bacula-Teco-Catalog-Full
5: Default
6: Foton-Full
7: Foton-Diff
8: Foton-Inc
......
33: Blade-Hoja13-Full
34: Blade-Hoja13-Diff
35: Blade-Hoja13-Inc

Select the Pool (1-134): 35
Connecting to Storage daemon Strg-Kurchatovio at 10.0.48.212:9103 ...
Sending label command for Volume "Blade-Hoja13-Inc-0680" Slot 0 ...
3937 Device ""Storage-Kurchatovio" (/raid/Kurchatovio)" is busy with writers=1 reserved=0.
Label command failed for Volume Blade-Hoja13-Inc-0680.
Do not forget to mount the drive!!!
*

:: Fatal error: Can't fill Pathtable Query failed

Antes de implementar alguna solucion para el correcto funcionamiento hacemos un dump de la base como backup de la siguiente forma:

mysqldump --opt -u root -p bacula > bacula.sql password: (colocar el password, dejar hasta que devuelva el prompt)

Error que se genero:

18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "FSRM
Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:21 raidebian-sd JobId 4359: Job write elapsed time = 00:34:58,
Transfer rate = 2.925 M bytes/second
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete):
"System Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "IISMetabase Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "FRSWriter", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "DFSReplication service writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "BITSWriter", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "WMIWriter", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "EventLog Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete):"MSDEWriter", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete):"Registry Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "COM+REGDB Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:21 raidebian-dir JobId 4359: Fatal error: Can't fill Pathtable Query failed: INSERT INTO Path (Path) SELECT a.Path FROM (SELECTDISTINCT Path FROM batch) AS a WHERE NOT EXISTS (SELECT Path FROM PathAS p WHERE p.Path = a.Path): ERR=Incorrect key file for table'/tmp/#sql_7c03_1.MYI'; try to repair it
18-may 12:21 raidebian-dir JobId 4359: Error: Bacula raidebian-dir 2.2.8
(26Jan08): 18-may-2009 12:21:51
Build OS: i486-pc-linux-gnu debian lenny/sid
JobId: 4359Job: Backup-sdcfile1.2009-05-18_11.46.42
Backup Level: Incremental, since=2009-05-06 23:00:03
Client: "sdcfile1-fd" 2.4.3 (10Oct08) Linux,Cross-compile,Win32
FileSet: "sdcfile1FileSet" 2008-11-26 23:00:00
Pool: "sdcfile1-Inc-Pool" (From User input)
Storage: "raidebian-sd" (From Job resource)
Scheduled time: 18-may-2009 11:46:35
Start time: 18-may-2009 11:46:53
End time: 18-may-2009 12:21:51
Elapsed time: 34 mins 58 secs
Priority: 5FD Files Written: 5,068SD Files Written: 5,068
FD Bytes Written: 6,136,839,297 (6.136 GB)
SD Bytes Written: 6,137,878,056 (6.137 GB)
Rate: 2925.1 KB/sSoftware Compression: 24.2 %
VSS: yesStorage Encryption: noVolume name(s): sdcfile1-Inc-0205
Volume Session Id: 38Volume Session Time: 1242412747
Last Volume Bytes: 16,016,990,585 (16.01 GB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: O
KSD termination status: O
KTermination: *** Backup Error ***
18-may 12:21 raidebian-dir JobId 4359: Begin pruning Jobs.
18-may 12:21 raidebian-dir JobId 4359: No Jobs found to prune.
18-may 12:21 raidebian-dir JobId 4359: Begin pruning Files.
18-may 12:21 raidebian-dir JobId 4359: No Files found to prune.
18-may 12:21 raidebian-dir JobId 4359: End auto prune.

Este error se genero por falta de espacio principalmente, pero ademas el archivo de configuracion del Mysql, osea, my.cnf (/etc/mysql/) tenia la variable tmpdir apuntando al directorio /tmp el cual tiene poco espacio y el archivo temporario #sql_7c03_1.MYI', que genera, crecio en forma desproporcionada, lo que se hizo es cambiar a /var/tmp.

Si en otra ocasion no funciona, debemos borrar el indice que corresponde en este caso a la tabla Path de esta forma:

alter table Path drop index Path;

Luego volvemos a crearlo tal cual esta escrito:

alter table Path add index Path (`Path`(255));

Para poder ver que Keys tiene debemos hacer lo siguiente:

show create tables Path;

Hecho esto reiniciamos el mysql server y en teoria deberia andar.

:: Repara error en Tabla Log


Query failed: .sql query="SELECT Time, LogText FROM Log WHERE JobId='3510' order by Time". ERR=Query failed: SELECT Time, LogText FROM Log WHERE JobId='3510' order by Time: ERR=Table './bacula/Log' is marked as crashed and should be repaired

[root@Bacula-Director-3 /]# mysqlcheck -h baculadirector3.tudominio.com.ar -u usuariomysql -p -o bacula

bacula.BaseFiles OK
bacula.CDImages OK
bacula.Client OK
bacula.Counters OK
bacula.Device OK
bacula.File OK
bacula.FileSet OK
bacula.Filename OK
bacula.Job OK
bacula.JobHisto OK
bacula.JobMedia OK
bacula.Location OK
bacula.LocationLog OK
bacula.Log
Error : Table './bacula/Log' is marked as crashed and should be repaired
Error : Table 'Log' is marked as crashed and should be repaired
error : Corrupt
bacula.Media OK
bacula.MediaType OK
bacula.Path OK
bacula.PathHierarchy OK
bacula.PathVisibility OK
bacula.Pool OK
bacula.Status OK
bacula.Storage OK
bacula.UnsavedFiles OK
bacula.Version OK

mysql> repair table Log;
+------------+--------+----------+------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------+--------+----------+------------------------------------------------------+
| bacula.Log | repair | info | Found block that points outside data file at 1019032 |
| bacula.Log | repair | status | OK |
+------------+--------+----------+------------------------------------------------------+
2 rows in set (0.27 sec)

There were no results!
It is possible you may need to add "catalog = all" to the Messages resource for this job.

Cancele el Job y reinicie el bacula-director, bacula-sd y el mysql , el error desaparecio, muestra directamente el log del Job cancelado . Desde consola restarteo el Job Cancelado

run job="Job-Gth" client="Gth-fd" level=Incremental fileset="Gth-FileSet"

:: Error de Permisos denied


28-Feb 14:50 Kurchatovio-dir: Warning: Cannot bind port 9101: ERR=Cannot assign requested address: Retrying ...
28-Feb 14:52 Kurchatovio-dir: Warning: Cannot bind port 9101: ERR=Cannot assign requested address: Retrying ...
28-Feb 14:54 Kurchatovio-dir: ERROR in parse_conf.c:918 Config error: Cannot open config file "/etc/bacula/bacula-dir.conf": Permission denied
Este error en particular se produce cuando el director en el archivo bacula-dir.conf tiene el DirAddres mal o la password mal.
Para solucionarlo chequeamos que el IP del servidor sea el mismo IP que tiene el Director, o que el Filedaemon (FD) tenga el password correcto del director.

:: Proceso de Job Trabado


Cuando en Bat console vemos que el job que esta corriendo presenta este aspecto:

BDPGSQL-dir Start Backup JobId 2289, Job=Job-Senasa-Archivos2.2013-04-15_23.00.00_09

Lo que usualmente hago es reiniciar el daemon del storage para que reactive, si bien este proceso se pierde, lo demas que estan en cola continuan y obtendremos del proceso trabado generalmente el siguiente log:

BDPGSQL-dir Start Backup JobId 2289, Job=Job-Senasa-Archivos2.2013-04-15_23.00.00_09BDPGSQL-dir Job Job-Senasa-Archivos2.2013-04-15_23.00.00_09 waiting 3600 seconds for scheduled start time.
Rescheduled Job Job-Senasa-Archivos2.2013-04-15_23.00.00_09 at 16-abr-2013 11:43 to re-run in 3600 seconds (16-abr-2013 12:43).
Error: Bacula BDPGSQL-dir 5.0.2 (28Apr10): 16-abr-2013 11:43:57
Build OS: x86_64-pc-linux-gnu debian 6.0.6
JobId: 2289
Job: Job-Senasa-Archivos2.2013-04-15_23.00.00_09
Backup Level: Incremental, since=2013-04-07 14:29:45
Client: "Archivos2-fd" 5.2.5 (26Jan12) Microsoft Windows Server 2008 Standard Edition Service Pack 1 (build 6001), 32-bit,Cross-compile,Win32
FileSet: "FileSet-Archivos2-Senasa" 2012-10-15 01:30:00
Pool: "Archivos2-Senasa-Inc" (From Run pool override)
Catalog: "MyCatalog" (From Client resource)
Storage: "Strg-FreeNas-BDPGSQL" (From run override)
Scheduled time: 15-abr-2013 23:00:00
Start time: 15-abr-2013 23:00:02
End time: 16-abr-2013 11:43:57
Elapsed time: 12 hours 43 mins 55 secs
Priority: 10
FD Files Written: 0
SD Files Written: 0
FD Bytes Written: 0 (0 B)
SD Bytes Written: 0 (0 B)
Rate: 0.0 KB/s
Software Compression: None
VSS: no
Encryption: no
Accurate: no
Volume name(s):
Volume Session Id: 91
Volume Session Time: 1363197140
Last Volume Bytes: 0 (0 B)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status:
SD termination status:
Termination: *** Backup Error ***
Fatal error:
Storage daemon didn't accept Device "Storage-FreeNas-BDPGSQL" command.

:: Comprobar Database de Bacula.

Dbcheck es un sencillo programa que buscará las inconsistencias lógicas en las tablas de Bacula en su base de datos y, opcionalmente, arreglarlos. Es una rutina de mantenimiento de base de datos, en el sentido de que puede detectar y eliminar filas no utilizadas, pero no es una rutina de reparación de base de datos.

Uso: dbcheck [-c config] [-C catalog name] [-d debug_level]
-b batch mode
-C catalog name in the director conf file
-c director conf filename
-B print catalog configuration and exit
-dnn set debug level to nn
-dt print timestamp in debug output
-f fix inconsistencies
-v verbose
-? print this message

Ejemplo

root@bacula-dir:~# dbcheck /etc/bacula/bacula-dir.conf bacula bacula password

[-c config] = /etc/bacula/bacula-dir.conf
[-C catalog name] = bacula

En el menu 1 se utiliza para la comprobacion del estado general de la base, esta se lleva acabo con la seleccion de la opcion 16

Menu 1

1) Activar bandera modificar base de datos
2) Activar bandera detallado
3) Verificar malos registros de Nombre de Archivo
4) Verificar malos registros de Rutas
5) Verificar registros de Nombre de Archivo duplicados
6) Verificar registros de Rutas duplicados
7) Verificar registros de Jobmedia huérfanos
8) Verificar registros de Archivo huérfanos
9) Verificar registros de Rutas huérfanos
10) Verificar registros de nombre de archivo huérfanos
11) Verificar registros de FileSet huérfanos
12) Verificar registros de Cliente huérfanos
13) Verificar registros de Job huérfanos
14) Verificar todos los registros de Administración
15) Verificar todos los registros de Restauración
16) Todos (3-15)
17) Salir

El menu 2 se activa una vez que hallamos verificado la base, y presionaremos la opcion 1 y luego la opcion 16 que ejecuta los items del 3-15

Menu 2
1) Activar bandera modificar base de datos
2) Activar bandera detallado
3) Reparar malos registros de Nombre de Archivo
4) Reparar malos registros de Rutas
5) Eliminar registros de Nombre de Archivo duplicados
6) Eliminar registros de Rutas duplicados
7) Eliminar registros de Jobmedia huérfanos
8) Eliminar registros de Archivo huérfanos
9) Eliminar registros de Rutas huérfanos
10) Eliminar registros de nombre de archivo huérfanos
11) Eliminar registros de FileSet huérfanos
12) Eliminar registros de Cliente huérfanos
13) Eliminar registros de Job huérfanos
14) Eliminar todos los registros de Administración
15) Eliminar todos los registros de Restauración
16) Todos (3-15)
17) Salir

:: Fatal error: Device reservation failed

Este error se produce cuando tenemos en el bacula-sd.conf un nombre de Device distinto al declarado en bacula-dir.conf

Bacula-Director-2-dir Start Backup JobId 6428, Job=Job-Nagios.2013-04-25_23.50.00_24
Bacula-Director-2-sd Fatal error: Device reservation failed for JobId=6428:
Bacula-Director-2-dir Fatal error:
Storage daemon didn't accept Device "Storage-FreeNas-1-BD2" because:
3924 Device "Storage-FreeNas-1-BD2" not in SD Device resources.

Error: Bacula Bacula-Director-2-dir 5.0.2 (28Apr10): 25-abr-2013 23:50:02
Build OS: x86_64-pc-linux-gnu debian 6.0.6
JobId: 6428
Job: Job-Nagios.2013-04-25_23.50.00_24
Backup Level: Incremental, since=2013-04-23 00:42:40
Client: "Nagios-fd" 5.0.1 (24Feb10) i486-pc-linux-gnu,ubuntu,10.04
FileSet: "FileSet-Nagios" 2012-11-07 23:50:00
Pool: "Nagios-Inc" (From Run pool override)
Catalog: "MyCatalog" (From Client resource)
Storage: "Strg-FreeNas-BD2" (From run override)
Scheduled time: 25-abr-2013 23:50:00
Start time: 25-abr-2013 23:50:02
End time: 25-abr-2013 23:50:02
Elapsed time: 0 secs
Priority: 50
FD Files Written: 0
SD Files Written: 0
FD Bytes Written: 0 (0 B)
SD Bytes Written: 0 (0 B)
Rate: 0.0 KB/s
Software Compression: None
VSS: no
Encryption: no
Accurate: no
Volume name(s):
Volume Session Id: 29
Volume Session Time: 1366832921
Last Volume Bytes: 0 (0 B)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status:
SD termination status:
Termination: *** Backup Error ***

: Ejemplos de Configuracion

:: Bacula Director por Source (bacula-dir.conf)

Director {
Name = Bacula-Director-1-dir
DIRport = 9101
QueryFile = "/home/bacula/bacula/bin/query.sql"
WorkingDirectory = "/home/bacula/bacula/bin/working"
PidDirectory = "/home/bacula/bacula/bin/working"
Maximum Concurrent Jobs = 20
Password = "D1r3ct0r1" # Console password
Messages = Daemon
DirAddress = 111.11.111.111
}

#------------------------ Definition of file storage device -----------------------------------------
Storage {
Name = Strg-Raidubuntu
Address = 111.11.111.111 # N.B. Use a fully qualified name here
SDPort = 9103
Password = "strgD1r3ct0r1"
Device = "Storage-Raidubuntu"
Media Type = File
}

#------------------------ Generic catalog service -----------------------------------------
Catalog {
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
}

#----------------------------------------- Reasonable message delivery -----------------------------------------

Messages {
Name = Standard
mailcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\
(Bacula-Director-1\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\
(Bacula-Director-1\) \<%r\>\" -s \"Bacula: Necesita intervención %j\" %r"
mail = su-usuario@.sudominio.com.ar = all, !skipped
operator = su-usuario@.sudominio.com.ar = mount
console = all, !skipped, !saved
append = "/home/bacula/bacula/bin/working/log" = all, !skipped
catalog = all
}

Messages {
Name = Daemon
mailcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\(Bacula-Director-1\) \<%r\>\" -s \"Bacula-Director-1 daemon message\" %r"
mail = su-usuario@sudominio.com.ar = all, !skipped
console = all, !skipped, !saved
append = "/home/bacula/bacula/bin/working/log" = all, !skipped
}

#------------------ Console used by tray-monitor ------------------------------------
Console {
Name = Bacula-Director-mon
Password = "D1r3ct0r1m0n"
CommandACL = status, .status
}

#--------------------------- CLIENT REMOTE CASA CENTRAL ------------------

@/home/bacula/bacula/client/Myself.conf
@/home/bacula/bacula/client/server1.conf
@/home/bacula/bacula/client/server2.conf

:: Bacula Director por Repositorio (bacula-dir.conf)

Director {
Name = Bacula-Director-2-dir
DIRport = 9101
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 4
Password = "D1r3ct0r2"
Heartbeat Interval = 1
Messages = Daemon
DirAddress = 111.11.111.111
}

#------------------------------ STORAGE -------------------------------------

Storage {
Name = Strg-FreeNas-BD2
Address = 111.11.111.111
SDPort = 9103
Password = "strgSt0r4g3"
Device = Storage-FreeNas-BD2
Maximum Concurrent Jobs = 20
Media Type = File
}

#--------------------------- CATALOG ----------------------------------------

Catalog {
Name = MyCatalog
dbname = bacula; DB Address = ""; dbuser = "bacula"; dbpassword = "sql2011"
}

#--------------------------- MESSAGES ---------------------------------------

Messages {
Name = Standard
mailcommand = "/usr/lib/bacula/bsmtp -h mail.sudominio.com.ar -f \"\(Bacula-Director-2\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/lib/bacula/bsmtp -h mail.sudominio.com.ar -f \"\(Bacula-Director-2\) \<%r\>\" -s \"Bacula: Necesita intervención %j\" %r"
mail = bacula@sudominio.com.ar = all, !skipped
operator = csottile@senasa.gov.ar = mount
console = all, !skipped, !saved
append = "/var/lib/bacula/log" = all, !skipped
catalog = all
}

Messages {
Name = Daemon
mailcommand = "/usr/lib/bacula/bsmtp -h mail.sudominio.com.ar -f \"\(Bacula-Director-2\) \<%r\>\" -s \"Bacula-Director-2 daemon message\" %r"
mail = bacula@sudominio.com.ar = all, !skipped
console = all, !skipped, !saved
append = "/var/lib/bacula/log" = all, !skipped
}

#---------------------------- CONSOLE ---------------------------------------
Console {
Name = Bacula-Director-2-mon
Password = "D1r3ct0r2m0n"
CommandACL = status, .status
}

#--------------------------- CLIENT REMOTE CASA CENTRAL ------------------

@|"sh -c 'cat /etc/bacula/client/*.conf'"

:: Clientes Bacula-Director - Redhat/CentOS

Client {
Name = Server-fd
Address = server.senasa.gov.ar
FDPort = 9102
Catalog = MyCatalog
Password = "Cl13ntPPP" # El passwd lleva Cl13nt+Nombre de Server con letras y Numeros
File Retention = 30 days
Job Retention = 1 months
AutoPrune = yes
}
#----------------- FileSet --------------------------------
FileSet {
Name = "Server-FileSet"
Include {
Options {
signature = MD5
compression=GZIP
}

File = ""

}
}
#----------------- Schedule --------------------------------

Schedule {
Name = "Server-Schedule"
Run = Level = Full Pool = Server-Full storage = Strg-Server sat at HH:MM
Run = Level = Differential Pool = Server-Diff storage = Strg-Server wed at HH:MM
Run = Level = Incremental Pool = Server-Inc storage = Strg-Server mon tue thu fri at HH:MM
}

#---------------------------- JOBDEFS -----------------------------------
JobDefs {
Name = "Server-JobDFS"
Type = Backup
Storage = Strg-Server # No cambiarlo porque indica a que Storage apunta
Messages = Standard
Reschedule on error = yes
Reschedule interval = 1 hour
Reschedule times = 1
Priority = nn
}

#--------------------------- JOBS - BACKUPS ---------------------------------------
Job {
Name = "Backup-Server"
JobDefs = "Server-JobDFS"
Client = Server-fd
FileSet = "Server-FileSet"
Schedule = "Server-Schedule"
Write Bootstrap = "/home/bacula/bacula/bin/working/Server.bsr"
Pool = Server-Inc
}

#------------------------------ POOL -------------------------------------
Pool {
Name = Server-Full # File Pool definition
Label Format = Server-Full-
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = DD days # one year
Maximum Volumes = XX
Maximum Volume Jobs = 1 # Limit number of Volumes in Pool
Recycle Oldest Volume = yes
}

Pool {
Name = Server-Diff # File Pool definition
Label Format = Server-Diff-
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = DD days # one year
Maximum Volumes = XX # Limit number of Volumes in Pool
Maximum Volume Jobs = 1
Recycle Oldest Volume = yes
}

Pool {
Name = Server-Inc # File Pool definition
Label Format = Server-Inc-
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = DD days # one year
Maximum Volumes = 12
Maximum Volume Jobs = 1 # Limit number of Volumes in Pool
Recycle Oldest Volume = yes
}

-------------------------------------------------------------------------------------------

:: Clientes Bacula-Director - Debian/Ubuntu

Client {
Name = Server-fd
Address = server.senasa.gov.ar
FDPort = 9102
Catalog = MyCatalog
Password = "Cl13ntPPP" # El passwd lleva Cl13nt+Nombre de Server con letras y Numeros
File Retention = 30 days
Job Retention = 1 months
AutoPrune = yes
}
#----------------- FileSet --------------------------------

FileSet {
Name = "Server-FileSet"
Include {
Options {
signature = MD5
compression=GZIP
}

File = ""

}
}

#----------------- Schedule --------------------------------

Schedule {
Name = "Server-Schedule"
Run = Level = Full Pool = Server-Full storage = Strg-Server sat at HH:MM
Run = Level = Differential Pool = Server-Diff storage = Strg-Server wed at HH:MM
Run = Level = Incremental Pool = Server-Inc storage = Strg-Server mon tue thu fri at HH:MM
}

#---------------------------- JOBDEFS -----------------------------------

JobDefs {
Name = "Server-JobDFS"
Type = Backup
Storage = Strg-Server # No cambiarlo porque indica a que Storage apunta
Messages = Standard
Reschedule on error = yes
Reschedule interval = 1 hour
Reschedule times = 1
Priority = nn
}

#--------------------------- JOBS - BACKUPS ---------------------------------------

Job {
Name = "Backup-Server"
JobDefs = "Server-JobDFS"
Client = Server-fd
FileSet = "Server-FileSet"
Schedule = "Server-Schedule"
Write Bootstrap = "/var/lib/bacula/Server.bsr"
Pool = Server-Inc
}

#------------------------------ POOL -------------------------------------

Pool {
Name = Server-Full # File Pool definition
Label Format = Server-Full-
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = DD days # one year
Maximum Volumes = XX
Maximum Volume Jobs = 1 # Limit number of Volumes in Pool
Recycle Oldest Volume = yes
}

Pool {
Name = Server-Diff # File Pool definition
Label Format = Server-Diff-
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = DD days # one year
Maximum Volumes = XX # Limit number of Volumes in Pool
Maximum Volume Jobs = 1
Recycle Oldest Volume = yes
}

Pool {
Name = Server-Inc # File Pool definition
Label Format = Server-Inc-
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = DD days # one year
Maximum Volumes = 12
Maximum Volume Jobs = 1 # Limit number of Volumes in Pool
Recycle Oldest Volume = yes
}

----------------------------------------------------------------------------------------

:: Clientes Bacula-Director (General): Myself.conf

Client {
Name = Server-fd
Address = server.senasa.gov.ar
FDPort = 9102
Catalog = MyCatalog
Password = "Cl13ntPPP" # El passwd lleva Cl13nt+Nombre de Server con letras y Numeros
File Retention = 30 days
Job Retention = 1 months
AutoPrune = yes
}

#--------------------------- FILESET ------------------------------------

FileSet {
Name = "Bacula-Director-nn-FileSet"
Include {
Options {
signature = MD5
}
File = /etc
File = /home
File = /var
File = /usr
File = /var/lib/bacula/
}
Exclude {
File = /proc
File = /tmp
File = /.journal
File = /.fsck
}
}

FileSet {
Name = "Catalog"
Include {
Options {
signature = MD5
}
File = "/var/lib/bacula/bacula.sql"
}
}

#--------------------------- SCHEDULE -----------------------------------

Schedule {
Name = "Bacula-Director-nn-Schedule"
Run = Level = Full Pool = Bacula-Director-nn-Full storage = Strg-SSS sat at HH:MM
Run = Level = Differential Pool = Bacula-Director-nn-Diff storage = Strg-SSS wed at HH:MM
Run = Level = Incremental Pool = Bacula-Director-nn-Inc storage = Strg-SSS mon tue thu fri at HH:MM
}

Schedule {
Name = "WeeklyCycleAfterBackup"
Run = Level = Full Pool = Bacula-Director-nn-Catalog storage = Strg-SSS mon-sat at 23:20
}

#---------------------------- JOBDEFS -----------------------------------

JobDefs {
Name = "Server-JobDFS"
Type = Backup
Storage = Strg-SSS
Messages = Standard
Reschedule on error = yes
Reschedule interval = 1 hour
Reschedule times = 1
Priority = nn
}
JobDefs {
Name = "Bacula-Director-nn-Catalogo-JobDFS"
Type = Backup
Server = Bacula-Director-1-fd
FileSet = "Catalog"
Schedule = "WeeklyCycleAfterBackup"
Storage = Strg-SSS
Messages = Standard
Priority = nn # run after main backup
}

#--------------------------- JOBS - BACKUPS ---------------------------------------

Job {
Name = "Backup-Server"
JobDefs = "Server-JobDFS"
Client = Server-fd
FileSet = "Bacula-Director-nn-FileSet"
Schedule = "Bacula-Director-nn-Schedule"
Write Bootstrap = "/home/bacula/bacula/bin/working/Backup-Server.bsr"
Pool = Server-Inc
}

#--------------------------- JOBS - RESTORE ---------------------------------------

Job {
Name = "Restore-Files"
Type = Restore
Client = Server-fd
FileSet = "Bacula-Director-nn-FileSet"
Storage = Strg-SSS
Pool = Default
Messages = Standard
Where = /var/local/bacula
Priority = 1
}

#------------------------------ POOL -------------------------------------

Pool {
Name = Server-Full # File Pool definition
Label Format = Server-Full-
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 30 days # one year
Maximum Volumes = 2 # Limit number of Volumes in Pool
Maximum Volume Jobs = 1
Recycle Oldest Volume = yes
}
Pool {
Name = Server-Inc # File Pool definition
Label Format = Server-Inc-
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 30 days # one year
Maximum Volumes = 8 # Limit number of Volumes in Pool
Maximum Volume Jobs = 1
Recycle Oldest Volume = yes
}

Pool {
Name = Server-Diff # File Pool definition
Label Format = Server-Diff-
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 30 days # one year
Maximum Volumes = 2 # Limit number of Volumes in Pool
Maximum Volume Jobs = 1
Recycle Oldest Volume = yes
}

Pool {
Name = Server-Catalogo # File Pool definition
Label Format = Server-Catalogo-
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 30 days # one year
Maximum Volumes = 5 # Limit number of Volumes in Pool
Maximum Volume Jobs = 1
Recycle Oldest Volume = yes
}

Pool {
Name = Default # Default pool definition
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 30 days # one months
}

1 comentario: