Sistema de backups BACULA
De Wikillano
Contenido |
El sistema se divide en:
* Bacula director El demonio encargado de gestionar todas las operaciones de backup. El director sabe los trabajos que se van a realizar, cuando , donde y como. Y además se encarga de restaurar los ficheros que le pidamos y su verificación (una especie de suma de comprobación de integridad). Se puede instalar en cualquier máquina de la red.
* Bacula File El cliente. Es necesario instalarlo en todas las máquinas de las que queramos hacer respaldo. Su función es leer y transmitir los ficheros que el director le pida, o restaurarlos.
* Bacula Storage Este demonio se encarga de la lectura/escritura física en los volúmenes que estén definidos (cintas, ficheros)
Para el servidor Bacula debemos instalar los siguiente paquetes,
en ubuntu:
* apt-get install mysql-server-4.1
o Una vez este instalado Mysql deberemos ponerle una contraseña al usuario root
* apt-get install bacula-sd-mysql
o Herramientas utiles para manejar las copias bscan.. etc
* apt-get install bacula-director-mysql
o La instalación de este paquete nos pedirá el usuario y password mysql de root y un password para la aplicación bacula.
* apt-get install bacula-sd
o Paquete de instalacion bacula storage
Para instalar los clientes:
* apt-get install bacula-fd
Para redhat:
* bacula-client-1.38.11-3.el3.i386.rpm
Los ficheros de configuracion de bacula contienen los password encriptados podemos crear unos nuevos con la herramienta:
makepasswd --clearfrom=pass --crypt-md5 –verbose
pass es el fichero que contiene el password. si no se dispone de esta utilidad se puede instalar desde los repositorios. En los ficheros de configuración
Configuración storage:
fichero /etc/bacula/bacula-sd.conf
Aquí definimos el servidor de storage:
Storage { # definition of myself
Name = sol-bserver-sd
SDPort = 9103 # Director's port
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
SDAddress = 172.24.43.74
}
########################################################## # DIRECTORbacula-fd ##########################################################
Aquí configuramos el director (el mismo servidor)
Director {
Name = sol-bserver-dir
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
}
##########################################################
# Restricted Director, used by tray-monitor to get the
# status of the storage daemon
##########################################################
Director {
Name = sol-bserver-mon
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
Monitor = yes
}
##########################################################
# Devices
##########################################################
En esta parte configuramos los devices donde dejaremos las copias de seguridad, en este caso lo dejamos en /backup el nombre de nuestro device es disco.
Device {
Name = disco
Media Type = File
Archive Device = /backup
LabelMedia = yes; # permite a bacula etiquetar los volumenes
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}
Messages {
Name = Standard
director = sol-bserver-dir = all
}
Configuración de fichero Director:
fichero /etc/bacula/bacula-dir.conf
Lo primero es configurar el director, (servidor)
#########################################
# Director
#########################################
Director { # define myself
Name = sol-bserver-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 1
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L" # Console password
Messages = Daemon
DirAddress = 172.24.43.74
}
Aquí se definen los jobs con las opciones por defecto, lo mejor es crear una default para todos y después en cada job independiente modificar las opciones necesarias
#########################################
# JOB DEFINITIONS
#########################################
#definicion para máquinas windows
JobDefs {
Name = "windows"
Type = Backup
FileSet = "windows"
Storage = files
Messages = Standard
Priority = 10
}
# Definicion para máquinas linux
JobDefs {
Name = "linux"
Type = Backup
FileSet = "linux"
Storage = files
Messages = Standard
Priority = 10
}
# Definicion default
JobDefs {
Name = "default"
Type = Backup
Storage = files
Messages = Standard
Priority = 10
}
En esta parte definimos los jobs de los clientes a hacer backup, uno por cada máquina.
########################################
# JOBS
########################################
#maquina Oracle BI
Job {
Name = "ravel.oracle.BI_01.isclab.es"
Client = ravel.oracle.BI_01.isclab.es
JobDefs = "default"
FileSet = "ravel.oracle.BI_01.isclab.es"
Level = "incremental"
Pool = incr-diaria
Schedule = "diaria"
}
En este apartado definimos los directorios a copiar, cada fileset es de un cliente, a no ser que queramos copiar lo mismo de muchas máquinas, entonces podemos llamarlo genérico y en el apartado jobs definírselos a las máquinas que queramos.
########################################
# Lista de FILESETS
########################################
# fileset para cliente ravel.oracle.BI_01.isclab.es
#Oracle BI
FileSet {
Name = "ravel.oracle.BI_01.isclab.es"
Include {
File = "/home/oracle/work"
File = "/data/backup"
Options { signature=MD5
compression=GZIP
}
}
}
Aquí definimos los schedules que queremos, en nuestro caso tenemos :
- Diario
de Lunes a Viernes incremental. Un full backup los Domingos.
- Semanal
Un backup Full los Domingos.
- Mensual
Un Full backup cada primer domingo de mes.
Como se puede observar los backups Full los hace en el pool: full-semanal.
##########################################
# Lista de SCHEDULES
##########################################
Schedule {
Name = "diaria"
Run = Level=incremental Pool=incr-diaria mon-fri at 04:00
Run = Level=Full Pool=full-semanal sun at 04:00
}
Schedule {
Name = "semanal"
Run = Level=Full Pool=full-semanal sun at 04:00
}
Schedule {
Name = "mensual"
Run = Level=Full Pool=full-mensual 1st sun at 04:00
}
En este apartado creamos los clientes, así el servidor director podrá conectar con ellos.
##########################################
#Lista de CLIENTES
# Client (File Services) to backup
#########################################
# Maquina oracle BI (debian-oracle)
Client {
Name = ravel.oracle.BI_01.isclab.es
Address = 172.24.43.52
FDPort = 9102
Catalog = MyCatalog
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
# File Retention = 30 days # 30 days
# Job Retention = 6 months # six months
# AutoPrune = yes # Prune expired Jobs/Files
}
En este punto hemos de definir el servidor de storage, hay que tener en cuenta que en el apartado Device debemos poner el mismo nombre que pusimos en el fichero de configuración del storage.
##########################################
# Conector al sistema de copia
# Definition of file storage device
##########################################
Storage {
Name = files
Address = 172.24.43.74 # N.B. Use a fully qualified name here
SDPort = 9103
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
Device = disco
Media Type = File
}
Aquí es donde se define la conexión con la BBDD
###########################################
# Catalogo
###########################################
Catalog {
Name = MyCatalog
dbname = bacula; DB Address = "127.0.0.1"; user = bacula; password = "passeord aplicación bacula"
}
y por último definimos los pools
incr-diaria Retención de las cintas: 8 días Máxima capacidad de la cinta 4Gb Duración durante la cual una cinta está append: 1 día full-semanal Retención de las cintas: 15 días Máxima capacidad de la cinta 4Gb Duración durante la cual una cinta está append: 1 día full-mensual Retención de las cintas: 365 días Máxima capacidad de la cinta 4Gb Duración durante la cual una cinta está append: 1 día
Debido a la falta de espacio para hacer backups la retención de los backups puede variar. (la Full mensual no se utiliza).
#############################################
#Lista de POOLS
# Default pool definition
#############################################
Pool {
Name = incr-diaria
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 8 days #
Accept Any Volume = yes # write on any volume in the pool
Maximum Volume Bytes = 4g
Volume Use Duration = 1d
LabelFormat = "Vol"
}
Pool {
Name = full-semanal
Pool Type = Backup
Recycle = no # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 15 days #
Accept Any Volume = yes # write on any volume in the pool
Maximum Volume Bytes = 4g
Volume Use Duration = 1d
LabelFormat = "Vol-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-${Hour}${Minute}${Second}"
}
Pool {
Name = full-mensual
Pool Type = Backup
Recycle = no # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days #
Accept Any Volume = yes # write on any volume in the pool
Maximum Volume Bytes = 4g
Volume Use Duration = 1d
LabelFormat = "Vol-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-${Hour}${Minute}${Second}"
Configuración de cliente: (file-daemon)
fichero /etc/bacula/bacula-fd.conf
Aquí definimos quien es el director (servidor) sol-bserver-dir es el director de bacula.
#
# Default Bacula File Daemon Configuration file
#
# For Bacula release 1.36.2 (28 February 2005) -- debian 3.1
#
# There is not much to change here except perhaps the
# File daemon Name to
#
#
# List Directors who are permitted to contact this File daemon
#
Director {
Name = sol-bserver-dir
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
}
Este director lo usa internamente para ver el estado del file Daemon
#
# Restricted Director, used by tray-monitor to get the
# status of the file daemon
#
Director {
Name = casals-mon
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
Monitor = yes
}
Configuración del cliente
#
# "Global" File daemon configuration specifications
#
FileDaemon { # this is me
Name = casals-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 20
FDAddress = 172.24.22.249
}
Envio de correos de alerta y warning hacia ek director.
# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = sol-bserver-dir = all, !skipped
}
