Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Qué es bacula
Bacula es un programa para hacer copias de seguridad de una máquina... pues no del todo: bacula es una
colección de demonios que cooperan entre sí para realizar copias de respaldo de los archivos necesarios,
sean de la máquina que sea. Para interactuar con bacula se necesita un elemento más: la consola de
bacula. Todos estos elementos son independientes entre sí y pueden estar en máquinas distintas, así pues
el principal problema a la hora de configurar bacula consiste en hacer que todos estos elementos se
• bacula-dir (o bacula-director)
Si, como es de suponer, queremos poder interactuar con el servicio de backup, necesitaremos:
bacula-director
Es el demonio que maneja al resto. El servidor de la base de datos MySQL debe estar accesible desde la
máquina que ejecuta el director (o estar en ella misma y escuchar en localhost... como viene siendo
habitual en Debian). Debe poder acceder tanto al bacula-sd como al bacula-fd para poder leer los archivos
En el archivo de configuración del director configuraremos dónde y cómo acceder al resto de demonios, la
Este demonio es el encargado de manejar el dispositivo de almacenamiento de los backups; esto exige
que este demonio esté instalado en la máquina que contenga físicamente el dispositivo de
almacenamiento, que puede ser: archivos en el disco local, grabadoras de CD o DVD y unidades de cinta.
Su archivo de configuración define el (o los) dispositivos de almacenamiento que maneja así como que
bacula-file daemon
Mediante este demonio bacula obtiene los ficheros que necesita respaldar, así pues éste es el componente
El archivo de configuración es el más simple de todos, símplemente especifica qué directores pueden
realizarle peticiones.
bacula-console
Una vez instalado y configurado bacula comenzará a realizar copias de seguridad el solito sin intervención
nuestra, pero puede suceder que queramos forzar una copia cuando nosotros lo deseemos, o que
tengamos que recuperar unos ficheros (protégenos Santa Tecla) o símplemente saber qué tal está nuestro
bacula. Para ello necesitamos este componente, similar a una shell pero con pocos comandos (resulta
hasta intuitivo... en serio...). Existen varios tipos de consolas: en modo texto, para gnome, con widgets
wx, etc. Supongo que también existirán clientes gráficos que no tengan nada que ver con una consola y
Qué necesitamos
Bueno, bacula necesitará de una base de datos SQL para apuntar sus cosillas, así pues es necesario tener
No es obligatorio pero si muy recomendable que todas las máquinas que intervengan en el proceso sean
Si tenemos nuestra base de datos lista ya podemos instalar en la máquina que realizará los backups los
siguientes paquetes:
Bueno, hay que decir que exiten más versiones del director: pqsql (para postgress SQL, sqlite y sqlite3
(imaginad...). En la instalación del director os pedirán los datos necesarios para configurar la base de
# dpkg-reconfigure bacula-director-mysql
Y arregláis el fallo.
Ahora, en la máquina que tenga nuestra unidad de almacenamiento (una cinta, por ejemplo) y que puede
Al igual que el director, este componente también tiene más alternativas: mysql, pgsql, sqlite y sqlite3.
Usaremos el simple porque nuestro director ya se encargará de crear catálogos y todo eso, no es
Ahora sólo nos faltará configurar todo esto para que se comuniquen entre sí... vamos a ello!
Por ser más simple será el primero que configuremos, echemos un vistazo a su archivo de configuración
(/etc/bacula/bacula-fd.conf):
Director {
Name = director_admitido1
Password = "password_chorrotronica_para_el_director_admitido1"
Director {
Name = backup-mon
Password = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Monitor = yes
FileDaemon {
Name = nombre_del_file-daemon
FDport = 9102
WorkingDirectory = /var/lib/bacula
Messages {
Name = Standard
nombre_resource {
opcion = valor
...
Es lo que en bacula llaman resources. Un resource define un elemento de bacula, hay muchos tipos de
resources diferentes, cada uno con sus propias opciones. El manual describe detalladamente todos ellos...
• Director: Identifica qué director puede conectarse con este file daemon; como veis se definen dos:
que especificamos es el nombre que hemos dado a nuestro director (lo veremos más adelante) y la
• FileDaemon: Define los parámetros del propio file daemon, parámetros como el puerto de escucha
o la IP a la que debe asociarse (recordad que si esa IP es 127.0.0.1 el demonio sólo aceptará
conexiones de la propia máquina local). Como véis también especifica el nombre que se da a
nuestro file daemon, es importante que coincida con el nombre que luego introduciremos en el
director.
Una vez modificado el archivo reiniciaremos el demonio y lo tendremos listo para funcionar con bacula,
una modificación del "original", para utilizar como almacenamiento un carrusel automático de cintas con
seis slots):
Storage {
Name = nombre_del_storage-daemon
SDPort = 9103
WorkingDirectory = "/var/lib/bacula"
SDAddress = maquina.dominio
Director {
Name = director_admitido1
Password = "password_chorrotronica_para_el_director_admitido1"
Director {
Name = backup-mon
Password = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Monitor = yes
Device {
Name = FileStorage
RemovableMedia = no;
AlwaysOpen = no;
Autochanger {
Name = Autochanger
Device {
Name = Tape1
Drive Index = 0
Autochanger = yes
AutomaticMount = yes
RemovableMedia = yes
RandomAccess = no
AutoChanger = yes
LabelMedia = yes
...
Device {
Name = Tape6
Drive Index = 0
Autochanger = yes
AutomaticMount = yes
RemovableMedia = yes
RandomAccess = no
AutoChanger = yes
LabelMedia = yes
Messages {
Name = Standard
importante aclarar que si tenemos un dispositivo de cintas con una sola unidad no será necesario
definir tantos "devices" como cintas tengas, ya que todas serán cargadas por el autochanger
• Autochanger: Es un Device especial que define un cargador automático de cintas. Se debe indicar
Configurando bacula-director
Este es el archivo más complicado. Ahora veremos una parte y más adelante la otra.
Veamos la parte que nos interesa ahora, tenemos esto en el fichero /etc/bacula/bacula-dir.conf:
Director {
Name = director_admitido1
DIRport = 9101
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Messages = Daemon
Client {
Name = nombre_del_file-daemon
Address = maquina.dominio
FDPort = 9102
Catalog = MyCatalog
Storage {
Name = File
Address = maquina.dominio
SDPort = 9103
Password = "password_chorrotronica_para_el_director_admitido1"
Device = FileStorage
Storage {
Name = nombre_del_almacenamiento
Address = maquina.dominio
SDPort = 9103
Password = "password_chorrotronica_para_el_director_admitido1"
Device = Autochanger
Autochanger = yes
Catalog {
Name = MyCatalog
Como este tiene más complicación, explicaremos resource a resource más despacito.
Director
Igual que en los casos anteriores, se define a sí mismo, los campos habituales son:
• Name: Nombre que damos al director. Es el mismo nombre que hemos permitido en los otros
demonios.
• Maximum Concurrent Jobs: Número máximo de trabajos concurrentes que acepta. En los casos
anteriores teníamos un valor mayor a 1, esto permitirá que varios directores utilicen esos
demonios a la vez. Establecer aquí este valor a 1 implica que el director sólo hará un trabajo cada
• Password: Contraseña que se pedirá al programa de consola. Esta contraseña no se pide por
teclado sino que también se almacena en el archivo de configuración del programa de consola.
abrirse consolas bacula en máquinas remotas, pero no causa problemas si tenemos los demás
demonios en otras máquinas puesto que es el director el que abre las conexiones con los otros
demonios.
Client
Aquí especificaremos los datos del bacula file daemon con el que necesitamos conectar para leer los
• Name: Nombre del file daemon. Este nombre no tiene porqué coincidir con el que dimos a nuestro
file daemon, es para nombralo dentro de bacula. Mi recomendación es que coincida, más que nada
• Catalog: Qué catálogo usa nuestro file daemon. Un catálogo es algo así como un listado de los
• File Retention: Este parámetro indica cuanto tiempo deben permanecer los archivos en el catálogo.
Pasado este tiempo se eliminan del catálogo (pero esto no influye en que se haga o no backups de
estos ficheros).
• Job Retention: Indica cuanto tiempo como máximo estará un trabajo esperando.
• AutoPrune: Si está a yes, una vez pasados los periodos File Retention y/o Job Retention se
Storage
Ahora especificaremos los dispositivos que podrá emplear bacula para hacer las copias de respaldo,
pueden existir varios (que se diferenciarán por el nombre). Debemos indicar los siguientes campos:
• Name: Nombre del medio de backup. No es el nombre del storage daemon sino del medio, por
• Address: Máquina donde está el storage daemon que maneja el medio de almacenamiento.
• Password: Contraseña que enviará el director para autentificarse contra el storage daemon.
• Media Type: Cuando se configura el medio se especifica que tipo de medio es, aquí también
tenemos que indicarlo (y debe coincidir). Bacula lo usa para "hacer sus cuentas".
Catalog
• Name: Nombre del catálogo (que usamos en el resource del file daemon).
• user: Usuario con privilegios en la base de datos especificada anteriormente suficientes como para crear
y modificar datos.
Bien, con todo esto ya tenemos un sistema bacula distribuido funcionando a las mil maravillas... para
Director {
Name = nombre_director-dir
DIRport = 9101
address = maquina_director.dominio
Password = "passwordchorrotronicaparalasconsolas"
}
Si todo ha ido bien podremos ejecutar bconsole como root o como un usuario que pertenezca al grupo
*status
El asterisco es el prompt de la consola de bacula, ejecutamos status y le decimos que all cuando nos
pregunte de qué queremos el estado. Si algún componente no puede contactarse, se notificará con el error
correspondiente. Si no obtenemos ninguno de esos errores tenemos el bácula funcionando. Ahora sólo nos
pueda comunicarse con el storage daemon y con el file daemon, por tanto dirá que todo esta funcionando;
sin embargo, el storage daemon y el file daemon no puedan conectarse entre sí; esto provocará que los
backups darán siempre error y no se realizarán. Esto sucede porque cuando el director va a hacer una
copia, conecta al file daemon con el storage daemon directamente y ellos dos realizan las transferencias
de datos. Debéis tener esto en cuenta cuando pongáis vuestro bacula a funcionar.
Bueno, como dijimos antes, la instalación de bacula por paquetes no crea la base de datos que utiliza para
realizar los backups, así que nosotros haremos ese trabajo "a mano". Vamos a asumir que tenemos
correctamente instalado y funcionando MySQL Server y phpmyadmin (tal y como se quedan después de
La base de datos que debemos crear es la que se especificó en el resourceCatalog que vimos
anteriormente, por ejemplo una base de datos llamada bacula (que es la usada por defecto). La creamos
con phpmyadmin, también podemos crear el usuario (que por defecto también debe ser uno llamado
bacula) con la contraseña que hayamos especificado. Lo único que debemos hacer ahora es crear unas
tablillas y listo, la siguiente porción de código SQL (que se puede pegar directamente en phpmyadmin y
listo) lo debería resolver (por cierto que está sacado de un script que viene en los paquetes de bacula pero
que a mi no me funcionaba):
USE bacula;
PRIMARY KEY(FilenameId),
INDEX (Name(255))
);
PRIMARY KEY(PathId),
INDEX (Path(255))
);
MD5 TINYBLOB,
PRIMARY KEY(FileId),
INDEX (JobId),
INDEX (PathId),
);
PRIMARY KEY(MediaTypeId)
);
PRIMARY KEY(StorageId)
);
PRIMARY KEY(DeviceId)
);
PRIMARY KEY(JobId),
INDEX (Name(128))
);
Enabled TINYINT,
PRIMARY KEY(LocationId)
);
NewEnabled TINYINT,
PRIMARY KEY(LocLogId)
);
MD5 TINYBLOB,
PRIMARY KEY(FileSetId)
);
PRIMARY KEY(JobMediaId),
);
Comment BLOB,
PRIMARY KEY(MediaId),
INDEX (PoolId)
);
LabelFormat TINYBLOB,
UNIQUE (Name(128)),
);
UNIQUE (Name(128)),
PRIMARY KEY(ClientId)
);
PRIMARY KEY(LogId),
INDEX (JobId)
);
PRIMARY KEY(BaseId)
);
);
);
);
JobStatusLong BLOB,
);
('R', 'Running'),
('B', 'Blocked'),
);
Ejecutáis eso (como administradores de MySQL si queréis), dáis permisos al usuario bácula en todas esas
tablas creadas y ya tenéis la base de datos lista para su uso por parte del director.
Por último, pondré unos archivos que uso yo y están funcionando, para que veáis unos ya configurados y
tal. Las contraseñas debéis cambiarlas (es un consejo). El escenario es el siguiente: tenemos un equipo
con cargador de cintas (de tres slots) que hace backup de un segundo equipo. Para no instalar muchas
cosas en el segundo equipo (no interferir en su funcionanmiento) lo único que instalaremos en ese equipo
es el file daemon. El equipo con el cargador va a tener por tanto el director y el storage daemon. La
máquina con el director se llamará respaldadora (192.168.0.2) y de la que queremos hacer backup se
fd.conf):
Director {
Name = backup-mon
Password = "password_para_backup-mon"
Monitor = yes
FileDaemon {
FDport = 9102
WorkingDirectory = /var/lib/bacula
FDAddress = 192.168.0.1
Messages {
Name = Standard
director = respaldadora-dir
dir = all, !skipped, !restored
Ahora vamos con respaldadora,, primero instalamos el storage daemon y lo configuramos con el siguiente
arhivo (/etc/bacula/bacula-sd.conf
sd.conf):
Storage {
Name = respaldadora-sd
SDPort = 9103
WorkingDirectory = "/var/lib/bacula"
SDAddress = 192.168.0.2
Director {
Name = respaldadora-dir
Password = "password_para_respaldadora-dir"
"password_para_respaldadora
Director {
Name = respaldadora-mon
Password = "password_para_respaldadora-mon"
Monitor = yes
Device {
Name = FileStorage
LabelMedia = yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
Autochanger {
Name = Autochanger
Device {
Name = Tape1
Drive Index = 0
Autochanger = yes
AutomaticMount = yes
RemovableMedia = yes
RandomAccess = no
AutoChanger = yes
LabelMedia = yes
Device {
Name = Tape2
Drive Index = 0
Autochanger = yes
AutomaticMount = yes
RemovableMedia = yes
RandomAccess = no
AutoChanger = yes
LabelMedia = yes
Device {
Name = Tape3
Drive Index = 0
Autochanger = yes
AutomaticMount = yes
RemovableMedia = yes
RandomAccess = no
AutoChanger = yes
LabelMedia = yes
Messages {
Name = Standard
Y finalmente instalamos el bacula director y lo configuramos, muy importante: este archivo no está
completo, falta la definicion de trabajos que se explica más adelante. El archivo es el siguiente
(/etc/bacula/bacula-dir.conf):
Director {
Name = respaldadora-dir
DIRport = 9101
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Password = "password_para_respaldadora-dir"
Messages = Daemon
DirAddress = 127.0.0.1 # Esto obliga a que las consolas bacula solo se puedan ejecutar
desde localhost
Client {
Name = importante-fd
Address = 192.168.0.1
FDPort = 9102
Catalog = MyCatalog
Password = "password_para_respaldadora-dir"
AutoPrune = yes
Storage {
Name = File
Address = 192.168.0.2
SDPort = 9103
Password = "password_para_respaldadora-dir"
Device = FileStorage
Storage {
Name = respaldadora-sd
Address = 192.168.0.2
SDPort = 9103
Password = "password_para_respaldadora-dir"
Device = Autochanger
Autochanger = yes
Catalog {
Name = MyCatalog
Messages {
Name = Standard
Messages {
Name = Daemon
Pool {
Name = Default
Recycle = yes
AutoPrune = yes
Console {
Name = respaldadora-mon
Password = "password_para_respaldadora-mon"
Trabajos de backup
A la hora de configurar un servicio de backup, antes de modificar a diestro y siniestro archivos de backup,
debemos pensar un poco de qué queremos hacer backup y, según su importancia, cuándo y cómo. En el
cómo tenemos dos alternativas: completo y diferencial. Un backup completo respaldará toda la lista
completa de ficheros a guardar, en cambio, un backup diferencial sólo guarda los ficheros modificados y
nuevos respecto a la copia anterior (lo cual permite ahorrar espacio en cintas). Una base de datos tipo
MySQL no tiene mucho sentido hacer respaldo diferencial puesto que se almacena toda ella en un único
archivo binario y las más mínima modificación implicará el almacenado del fichero completo. En cambio,
para una lista de ficheros de texto (un proyecto software, por ejemplo) los incrementales vienen muy bien
puesto que pocas veces cambiarán todos los ficheros a la vez sino que se modifican poco a poco.
Para responder al cuándo debemos pensar en la importancia de los datos y en cuánto trabajo se va al
garete si se perdieran los ficheros de un día para otro. Un conjunto de ficheros que se modifiquen a diario
deberían respaldarse a diario, sin embargo, para ficheros que rara vez se modifiquen puede ser aceptable
muchos usuarios que tienen sus proyectos en sus homes. ¿Cómo lo respaldaríamos? pues un ejemplo
podría ser el siguiente: cada dos meses un backup del sistema completo (básicamente somos muy vagos y
pasamos de reinstalarlo todo en caso de desastre, de esta forma podríamos restaurar el sistema completo
sin mucho esfuerzo... aunque existen programas más adecuados para esto, ej: mindi y mondo); como la
configuración del sistema es realmente más importante que el resto de archivos del sistema (puesto que
modificado por nosotros... pues no) realizaremos backups incrementales mansuales (tampoco se modifican
taaanto) de los datos variables en la distribución, es decir /etc y parte de /var. También tenemos la base
de datos MySQL, esto es más complicado puesto que no podemos hacer copia así como así de ella. Por
último tenemos los homes de los usuarios, como queremos que pierdan poco en caso de desastre
Una vez decidido cómo va a funcionar nuestro servicio de backup sólo nos queda configurar bacula director
Resource FileSet
Este resource define la lista de ficheros a respaldar. También permite establecer opciones útiles, como por
ejemplo calcular sumas MD5 de verificación, o usar compresión gz, etc. Veamos un ejemplo:
FileSet {
Include {
File = /etc
File = /var
Options {
signature = MD5
Exclude {
File = /var/log
File = /var/cache
File = /var/tmp
Pues muy fácil, hemos creado un conjunto de ficheros, llamado configuracion sistema que incluye todos los
ficheros y subdirectorios en /etc. De /var también metemos todo menos la "guarrería" . Además, de los
archivos que almacenemos se calculará la suma MD5 para comprobar que se salvaron correctamente. Se
pueden usar comodines en plan /usr/share/*/examples y cosas así, tanto para Include como para Exclude.
Se pueden especificar ficheros aislados, etc. Echad un vistazo al manual de bacula que vienen muchos
ejemplos interesantes. El FileSet por defecto de bacula es el sistema de ficheros completo. Podemos crear
Resource Schedule
Mediante estos resources se crean los intervalos de tiempo que emplearemos a la hora de crear los
trabajos, al igual que los FileSet los identificaremos por un nombre, por ejemplo:
Schedule {
Name = "CicloSemanal"
Schedule {
Name = "Diario"
Hemos creado dos: CicloSemanal y Diario, como véis, en el primero se realizan backups incrementales de
lunes (monday) a sábado (saturday) a las 01:05h y el domingo (sunday) a la misma hora uno completo.
En el otro schedule se realizan backups completos a diario. Por defecto éstos son los schedule de bacula
(salvo por la hora). El diario se emplea para hacer backup del catálogo de bacula.
Resource JobDefs
Aquí es donde finalmente pegaremos todo lo anterior para definir un trabajo completo de backup, si
JobDefs {
Enabled = yes
Type = Backup
Level = Incremental
Client = nombre_resource_filedaemon
Schedule = "CicloSemanal"
Storage = nombre_resource_storage
Messages = Standard
Pool = Default
Priority = 10
Los campos Client y Storage se explicaron anteriormente. El Level también se puede especificar aquí, pero
menor sea, más prioritario es el trabajo (en caso de que se envíen varias peticiones a un storage daemon,
por ejemplo, se atienden por orden de prioridad). En cuanto al Pool... lo explicaremos más adelante . Por
defecto en bacula existen dos trabajos: DefaultJob que hace backups incrementales diarios de todo el
sistema y completo los domingos, después de cada backup hace uno completo del catálogo.
Resource Job
Todos los campos de un JobDef son válidos para este resource también, la diferencia es que el anterior era
la definición de un trabajo y este es el trabajo propiamente dicho. Si tenemos una buena definición, el
Job {
del sistema. Además se creará una especie de log sobre el trabajo en el archivo indicado. Éste trabajo será
Ahora sólo nos queda saber una cosa, la organización del sistema de almacenamiento: los pools.
Resource Pool
En bacula se denomina volume a una cinta física (o archivo de backup). Un conjunto de volumes es un
pool. Podemos definir varios para distintos propósitos, por ejemplo: en un pool almacenamos copias
incrementales y en otro copias completas. Al instalar bacula se define un pool llamado Default de la
siguiente forma:
Pool {
Name = Default
Recycle = yes
AutoPrune = yes
El parámetro Pool Type indica el tipo, el único implementado en bacula es Backup, tienen intención de
soportar otros como Migration, Cloned, etc. Los últimos tres parámetros tienen que ver con el reciclaje de
cintas. Si no quedan más volúmenes y se permite su reciclado, cuando un volumen sea más antiguo que
su periodo de retención (un año en el ejemplo) será sobrescrito por backups nuevos.
Hay que decir que en un Pool podemos especificar parámetros como Client o Storage, que serían los que
utilizaría bacula a menos se especificase lo contrario en otra resource "superior". Así pues podemos definir
Si nos fijamos bien, en ningún parámetro se especifica qué volúmenes forman parte de esta pool... ¿cómo
se hace eso? esto ya debemos hacerlo desde la bacula console. En el caso de las cintas se deben
identificar con una etiqueta software que ponemos a las cintas con el comando label/relabel y
*label
1: File
2: respaldadora-sd
*add
1: File
2: respaldadora-sd
Podemos facilitarnos la vida un poco más si en el storage daemon, los resource tipo device que
empleemos tienen la opción LabelMedia = yes, esto hará que bacula vaya etiquetando las cintas limpias o
reciclables según vaya necesitándolas, es ese caso no necesitamos ejecutar label para nada.
Pues bien, con nuestro pool bien creado y los jobs bien definidos ya tenemos nuestro servicio de backup
Para hacer una receta de copia-pega vamos a incluír un archivo de configuración completo para el bacula-
Director {
Name = respaldadora-dir
DIRport = 9101
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Password = "password_para_respaldadora-dir"
Messages = Daemon
DirAddress = 127.0.0.1 # Esto obliga a que las consolas bacula solo se puedan ejecutar
desde localhost
Client {
Name = importante-fd
Address = 192.168.0.1
FDPort = 9102
Catalog = MyCatalog
Password = "password_para_respaldadora-dir"
AutoPrune = yes
Storage {
Name = File
Address = 192.168.0.2
SDPort = 9103
Password = "password_para_respaldadora-dir"
Device = FileStorage
Storage {
Name = respaldadora-sd
Address = 192.168.0.2
SDPort = 9103
Password = "password_para_respaldadora-dir"
Device = Autochanger
Autochanger = yes
Catalog {
Name = MyCatalog
Messages {
Name = Standard
Messages {
Name = Daemon
Pool {
Name = Default
Recycle = yes
AutoPrune = yes
Console {
Name = respaldadora-mon
Password = "password_para_respaldadora-mon"
JobDefs {
Name = "Usuarios"
Enabled = yes
Type = Backup
Level = Incremental
Client = importante-fd
FileSet = "homes"
Schedule = "Semanal"
Storage = respaldadora-sd
Messages = Standard
Pool = Default
Priority = 10
JobDefs {
Name = "Sistema"
Enabled = yes
Type = Backup
Client = importante-fd
Schedule = "Mensual"
Storage = respaldadora-sd
Messages = Standard
Pool = Default
Priority = 10
Job {
JobDefs = "Usuarios"
Job {
JobDefs = "Sistema"
FileSet {
Name = "homes"
Include {
File = /home
Options {
signature = MD5
Exclude {
File = *.avi
File = *.iso
File = *.mp3
File = ~*
File = /home/*/tmp
FileSet {
Include {
File = /
Options {
signature = MD5
Exclude {
File = /home
File = /var/tmp
File = /var/log
File = /var/cache
File = /var/run
File = /dev
File = /proc
File = /sys
File = /lost+found
Schedule {
Name = "Semanal"
Schedule {
Name = "Mensual"
Usar este archivo tal cual no es muy recomendable por varias razones, la más importante es que no hace
backup del catálogo de bacula, el archivo por defecto de bacula si lo hace; por otro lado, tampoco
tiene el trabajo de restauración de ficheros (lo cual puede ser peor...), por tanto coged las partes que os
interesen.
El más importante:
*help
...y después:
*m
Este último te muestra los mensajes que hubiese pendientes, tales como: Job completed o error at
XXXX... lo que sea. También podemos ver que tal van las cosas en bácula:
*status
*estimate
*estimate listing
Primero aparecerá una lista de los trabajos configurados, elegiremos el que queramos estimar, es el
primer caso nos aparecerá el número de ficheros que respaldará y cuanto ocupara la copia. En el segundo,
*list volumes
Esto mostrará todos los volúmenes del pool actual, cuánto llevan ocupado, retenido, etc. Si queremos
saber qué tal van los trabajos también usamos list, pero esta vez:
*list jobs
Nos aparecerá un resumen de lo más chulo: trabajos terminados, erróneos, etc.Si queremos forzar la
ejecución de un trabajo:
*run
Nos aparecerá una lista de trabajos y seleccionaremos el que queramos, automáticamente pasará a la lista
Resulta que tenéis vuestro servicio de backup funcionando y resulta que perdéis vuestros ficheros. Pues
* restore
10: Find the JobIds for a backup for a client before a specified time
12: Cancel
Pues nada... seleccionaremos lo que deseemos, una buena opción es la 5: Select the most recent backup
for a client, es decir: seleccionar el backup más reciente de un cliente. Seleccionamos esto y nos
1: homes
Ahora seleccionaremos el primero (o el que necesitéis), después de eso bacula buscará en qué cintas está
lo que buscamos y se hará sus cuentas (buscará todos aquellos ficheros que deba recuperar) y nos
You are now entering file selection mode where you add (mark) and
cwd is: /
Si introducimos help veremos una lista de comandos disponibles, tenemos cd y ls de toda la vida
(navegaremos por todos los ficheros posibles para recuperar según lo que eligiésemos). Luego tenemos
mark y markdir para marcar (recursivamente) archivos a recuperar, los archivos que con ls aparezca un
asterisco delante, significa que está marcado (en caso contrario no está seleccionado para recuperar).
$ mark *
Con lsmark mostramos sólo archivos marcados. Podemos desmarcarlos con unmark y unmarkdir. También
podemos estimar la cantidad de volumen que llevamos marcado con estimate. Cuando lo tengamos todo a
punto:
$ done
===========================================================================
JobName: RestoreFiles
Bootstrap: /var/lib/bacula/respaldadora-dir.restore.3.bsr
Where: /tmp/bacula-restores
Replace: always
Client: importante-fd
Storage: respaldadora-sd
When: 2007-03-1921:02:49
Catalog: MyCatalog
Priority: 10
OK to run? (yes/mod/no):
Si decimos que yes lanzará el trabajo que se ejecutará cuanto antes. Podemos cambiar el directorio
destino donde guardará todos los archivos recuperados (en el ejemplo /tmp/bacula-restores)
introduciendo mod, en cuyo caso mostrará una lista de parámetros modificables. Hay que decir que este
directorio es local a la máquina que ejecuta el client (un bacula file daemon) que aparece en el resumen y
Enlaces