www.bacula.org
1
Objetivos
Analizar la estructura de Bacula
Casos prácticos
Aclaraciones y consultas
2
Introducción
¿Qué es Bacula?
¿Por qué usar Bacula?
¿Cómo usar Bacula?
3
Bacula - Componentes
Bacula tiene seis componentes:
1. Director (DIR)
2. File Daemon o Cliente (FD)
3. Storage Daemon (SD)
4. Consola
5. Base de Datos del Catálogo
6. Tray Monitor
4
1. Director (DIR)
1. Director (DIR)
La administración y el control de todo está
centralizado
Job como unidad básica de trabajo
Inicia, programa y supervisa todos los Jobs
Mantiene el catálogo
Un solo Director excepto en sistemas muy
grandes
5
2. File Daemon o Cliente (FD)
2. File Daemon o Cliente (FD)
Realiza backups, restauraciones y verificaciones (a
petición del Director)
Se instala en cada máquina como un servicio
(daemon)
Se comunica a través de la red con el Director y
Storage daemon
Necesita acceso a todos los ficheros para realizar
backups (root)
El código es común pero se adapta a cada Sistema
Operativo
Múltiples File Deamons por Director, una por cada
máquina
6
3. Storage Daemon (SD)
3. Storage Daemon (SD)
Lee y escribe datos a los medios físicos:
Disco
Cinta
DVD
USB
Acepta órdenes y autorizaciones del Director
Acepta y devuelve datos de/hacia los File Daemons
(FD)
Envía la localización de los ficheros al Director ->
Catalog
Típicamente uno por Director
7
4. Consola
4. Consola
Permite a un usuario o administrador controlar
Bacula
Se comunica con el Director a través de la red
Inicia y verifica Jobs, comprueba / modifica el
catálogo
Consolas disponibles:
TTY (bconsole)
wxWidgets (GUI) - Linux, Unix, Win32
Gnome (GUI)
BAT
Consolas restringidas (ACL) por seguridad
8
5. Base de datos del Catálogo
5. Base de datos del Catálogo
Único componente que no pertenece al software de
Bacula
Base de datos SQL (MySQL, PostgreSQL o SQLite)
Seguimiento de Jobs, Volúmenes usados,
Localización de ficheros
Permite restaurar rápidamente
Permite comprar cuándo y dónde se realizó el
backup de un determinado fichero
Los datos antiguos se limpian automáticamente por
el Director
Escalado: soporta múltiples BBDD del mismo tipo
9
6. Tray Monitor
6. Tray Monitor
Gnome/KDE/Win32 GUI tray applet
Monitoriza el Director, los File Daemons, y
el Storage daemon
Muestra la actividad casi a tiempo real
10
Características
Un servidor central y un catálogo con backups
distribuidos
Todos los componentes se comunican a través
de la red y se distribuyen de forma separada
Scheduler interno para la ejecución automática
y simultánea de Jobs con prioridades
Restauración interactiva para uno o varios
ficheros desde:
Backup actual
Backup a una cierta fecha
Lista de ficheros / directorios a restaurar
Restaurar por JobId
11
Características (cont.)
Administración simple mediante consolas
Volúmenes etiquetados
Soporte para Unicode en Win32. UTF-8
en Unix.
Intérprete Python para realizar scripts
12
Características hardware
Los backups se pueden realizar en múltiples
volúmenes
Múltiples backups por volumen
Soporta la mayoría de las cintas en el mercado
Soporta múltiples autochangers (librerías)
Soporta lectores de códigos de barras
Capacidad para un amplio catálogo de
volúmenes
Rápidas restauraciones
13
Características de seguridad
- Autorización de daemons con CRAM-MD5
Director y Storage Daemon pueden ser
ejecutados como no-root
MD5,SHA1... para firmar cada fichero
CRC checksum para cada bloque de volumen
Consolas y tray-monitors restringidos
Encriptación en las comunicaciones (TLS)
Encriptación de datos (PKI)
14
Detalles técnicos
Sistemas Operativos soportados: Linux,
Win32, Solaris, *BSD, Mac OS X, Irix,
Tru64, AIX, HP-UX
Restaura con los permisos que tenía
anteriormente
Soporta ficheros grandes (>2GB) y
arquitecturas de 64 bits.
Escrito en C++
15
Fichero de configuración de
Director
Director {
Name = bacula-dir
Query File = "/usr/local/etc/query.sql"
Working Directory = "/var/bacula"
PID Directory = "/var/run"
Maximum Current Jobs = 20
Password = "secret"
Messages = Standard
}
16
Fichero de configuración de
console
Console {
Name = Monitor
Password = "monitor-secret"
CommandACL = status,status
CatalogACL = BackupD0
}
17
Configuración de Bacula - Job
Los jobs son la estructura básica unificada:
Name: Un nombre único
Type: Qué hacer, Backup, Migración, Restauración
Level: Full, Diferencial, Incremental
FileSet: De qué ficheros queremos realizar backups
Cliente: De dónde obtener los ficheros (nombre de
la máquina)
Storage: Dónde poner los ficheros (cabina de
cintas, p. ej)
Pool: Conjunto de Volumenes (cintas, disco) a
utilizar
Schedule: Cuándo hacerlo
18
Jobs
Job {
Name = "Laptop"
Type = Backup
Client = laptop-fd
FileSet = "Full Set"
Schedule = "Weekly Cycle"
Storage = File
Messages = Standard
Pool = Standard
Write Bootstrap = "/var/bacula/laptop.bsr"
Priority = 10
}
19
Client
Client {
Name = laptop-fd
Address = laptop.example.org
Catalog = MyCatalog
Password = "secret-fd"
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
Maximum Current Jobs = 20
}
20
Configuración de Bacula - File Set
Incluye / Excluye ficheros y/o directorios
Soporte para expresiones regulares
(regex)
Soporte para compresión usando criterio
de selección similares
Tipo de sistema de ficheros a hacer
backups
Firmas (MD5,SHA1,...)
21
File Set
FileSet {
Name = "Full Set"
Include {
Options {
signature = SHA1; sparse = yes
exclude = yes
}
File = /
File = /usr
File = /var
}
Exclude {
File = /proc; File = /tmp; File = /sys; File = /journal
}
}
22
Schedule
Schedule {
Name = "Weekly Cycle"
Run = Level = Full 1st sun at 2:05
Run = Level = Differential 2nd-5st sun at
2:05
Run = Level = Incremental mon-sat at 2:05
}
23
Configuración de File Daemon
FileDaemon {
Name = laptop-fd
Working Directory = /var/bacula
PID Directory = /var/run
}
Director {
Name = bacula-dir
Password = "secret-fd"
}
24
Configuración de Storage (SD)
Storage {
Name = bacula-sd
Working Directory = /var/bacula
PID Directory = /var/run
}
Director {
Name = bacula-dir
Password = "secret-sd"
}
25
Configuración de Devices
Device {
Name = File
Archive Device = /var/bacula/backups
Device Type = File #DVD, Cinta...
Media Type = File
Label Media = yes
Random Access = yes
...
}
26
Autochanger
AutoChanger {
Name = LTO-Changer
Device = Drive-0, Drive-1
Changer Device = /dev/sg0
...
}
27
Device (usando autochanger)
Device {
Name = Drive-0
Archive Device = /dev/nst0
Device Type = Tape #DVD,File
Media Type = LTO-2
Autochanger = yes
...
}
28
Futuras implementaciones:
Seguimiento de ficheros renombrados
Herramienta GUI oficial de Bacula
Permitir a FD iniciar un backup
Unir múltiples backups (synthetic Backup
o Consolidation)
Eliminación de Volumenes de Bacula
basados en disco
Mejorar la gestión de la limpieza de
cintas de Bacula
29
Recursos:
Para usuarios y administradores de sistemas:
Manual: http://www.bacula.org/rel-manual/index.html
Listas de compatibilidad del SO y Hardware (en el manual)
Reporte de bugs: http://bugs.bacula.org
Lista de correo para soporte: bacula-
users@lists.sourceforge.net
Para desarrolladores:
Documentación:
http://www.bacula.org/developers/index.html
Lista de email: bacula-devel@lists.sourceforge.net, bacula-
commits@lists.sourceforge.net
SVN en Source Forge
30
Casos prácticos
Caso práctico 1:
Instalación de clientes Bacula
31
Casos prácticos
Caso práctico 2:
Configuración de clientes Bacula para
conectarse con el servidor Bacula.
32
Casos prácticos
Caso práctico 3:
Realización de un backup local a disco
33
Casos prácticos
Caso práctico 4:
Realización de un backup de un cliente a
disco.
34
Casos prácticos
Caso práctico 5:
Creación de Schedulers personalizados
35
Casos prácticos
Caso práctico 6:
Cómo etiquetar una nueva cinta.
36
Casos prácticos
Caso práctico 7:
Realizar una restauración desde disco
37
Casos prácticos
Caso práctico 8:
Realizar un backup del catálogo
38
Casos prácticos
Caso práctico 9:
Realizar una restauración desde cinta.
39
Casos prácticos
Caso práctico 10:
Realizar una restauración del catálogo de
Bacula
40
Casos prácticos
Caso práctico 11:
Limpiar manualmente una cinta
41
Casos prácticos
Caso práctico 12:
Configurar la limpieza automática de las
cintas.
42
Casos prácticos
Caso práctico 13:
Realizar un backup full, y a continuación
dos incrementales consecutivos.
43
Casos prácticos
Caso práctico 14:
Restaurar el último backup incremental
44
Ruegos y preguntas
¿Dudas?
¿Más casos prácticos?
¿Consultas?
45
Mario Alcaide
Administrador de Bases de Datos
mario.alcaide@fujitsu.es
mario.alcaide.ext@juntadeandalucia.es
46