Bacula
Introduccion
Bacula es un sistema de copias de seguridad que funciona como cliente y servidor. Este sistema de copias de seguridad va a ser instalado en una de las maquinas virtuales de nuestro escenario openstack que hemos creado en posts anteriores, mas concretamente como bacula necesita de una base de datos mariadb, se usara nuestra maquina Sancho (servidor de base de datos del escenario openstack) como servidor de copias de seguridad y las demas maquinas haran de clientes.
Instalación en el servidor
sudo apt install bacula bacula-client bacula-common-mysql bacula-director-mysql bacula-server
Postfix-configuration → En este caso No configuration.
Password para bacula → backup.
Configuracion del director (/etc/bacula/bacula-dir.conf):
Director { # define myself
Name = sancho-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/run/bacula"
Maximum Concurrent Jobs = 20
Password = "backup" # Console password
Messages = Daemon
DirAddress = 10.0.1.8 #tambien podemos poner localhost
}
- Name → nombre del director.
- DIRport → puerto por el que el director va a escuchar las peticiones de bacula.
- QueryFile → ruta del directorio y el fichero usador por el director.
- WorkingDirectory → ruta donde se colocan los ficheros estaticos.
- PidDirectory → el directorio en el que el Director colocará los ficheros de id de los procesos.
- Maximum concurrent jobs → numero máximo de trabajos que el director puede correr.
- Password → contraseña de la consola backula.
- Messages → especifica donde tiene que entregar el DIrector los mensajes que no están asociados con un trabajo especifico.
- DirAddress → especifica los puertos y las direcciones IP donde escuchará el Director por conexiones Bacula mediante consola.
JobDefs {
Name = "Backups"
Type = Backup
Level = Incremental
Client = sancho-fd
FileSet = "Full Set"
Schedule = "semanal"
Storage = File
Messages = Standard
Pool = File
SpoolAttributes = yes
Priority = 10
Write Bootstrap = "/var/lib/bacula/%c.bsr"
}
#Jobs openstack
Job {
Name = "Sancho"
JobDefs = "Backups"
Client = "sancho-fd"
}
Job {
Name = "Quijote"
JobDefs = "Backups"
Client = "quijote-fd"
}
Job {
Name = "Freston"
JobDefs = "Backups"
Client = "freston-fd"
}
Job {
Name = "Dulcinea"
JobDefs = "Backups"
Client = "dulcinea-fd"
}
# Restauracion openstack
Job {
Name = "Restore-Sancho"
Type = Restore
Client=sancho-fd
FileSet="Full Set"
Storage = File
Pool = File
Messages = Standard
}
Job {
Name = "Restore-Quijote"
Type = Restore
Client=quijote-fd
FileSet="Full Set"
Storage = File
Pool = File
Messages = Standard
}
Job {
Name = "Restore-Freston"
Type = Restore
Client=freston-fd
FileSet="Full Set"
Storage = File
Pool = File
Messages = Standard
}
Job {
Name = "Restore-Dulcinea"
Type = Restore
Client=dulcinea-fd
FileSet="Full Set"
Storage = File
Pool = File
Messages = Standard
}
#Ficheros de backup
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /home
File = /etc
File = /var
}
Exclude {
File = /var/lib/bacula
File = /nonexistant/path/to/file/archive/dir
File = /proc
File = /var/cache
File = /var/tmp
File = /tmp
File = /sys
File = /.journal
File = /.fsck
}
}
#ciclo backup semanal
Schedule {
Name = semanal
Run = Level=Full sun at 23:59
Run = Level=Incremental mon-sat at 23:59
}
#clientes bacula
Client {
Name = sancho-fd
Address = 10.0.1.8
FDPort = 9102
Catalog = MyCatalog
Password = "bacula" # password for FileDaemon
File Retention = 60 days # 60 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
Client {
Name = quijote-fd
Address = 10.0.2.5
FDPort = 9102
Catalog = MyCatalog
Password = "bacula" # password for FileDaemon 2
File Retention = 60 days # 60 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
Client {
Name = freston-fd
Address = 10.0.1.3
FDPort = 9102
Catalog = MyCatalog
Password = "bacula" # password for FileDaemon 2
File Retention = 60 days # 60 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
Client {
Name = dulcinea-fd
Address = 10.0.1.5
FDPort = 9102
Catalog = MyCatalog
Password = "bacula" # password for FileDaemon 2
File Retention = 60 days # 60 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
#Almacenamiento
Storage {
Name = File
# Do not use "localhost" here
Address = 10.0.1.8 # N.B. Use a fully qualified name here
SDPort = 9103
Password = "bacula"
Device = FileChgr1
Media Type = File
Maximum Concurrent Jobs = 10 # run up to 10 jobs a the same time
}
#acceso a base de datos
Catalog {
Name = MyCatalog
dbname = "bacula"; DB Address = "localhost"; dbuser = "bacula"; dbpassword = "bacula"
}
#pool
Pool {
Name = File
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
Maximum Volume Bytes = 50G # Limit Volume size to something reasonable
Maximum Volumes = 100 # Limit number of Volumes in Pool
Label Format = "Remoto" # Auto label
}
Modificación bacula-sd (/etc/bacula/bacula-sd.conf):
Storage { # definition of myself
Name = sancho-sd
SDPort = 9103 # Director's port
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/run/bacula"
Plugin Directory = "/usr/lib/bacula"
Maximum Concurrent Jobs = 20
SDAddress = 10.0.1.8
}
Director {
Name = sancho-dir
Password = "backup"
}
Director {
Name = sancho-mon
Password = "backup"
Monitor = yes
}
Autochanger {
Name = FileChgr1
Device = FileStorage
Changer Command = ""
Changer Device = /dev/null
}
Device {
Name = FileStorage
Media Type = File
Archive Device = /backup
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
Maximum Concurrent Jobs = 7
}
Configuración de consola (/etc/bacula/bconsole.conf):
Director {
Name = sancho-dir
DIRport = 9101
address = 10.0.1.8
Password = "backup"
}
Configuracion de los clientes
Configuración de clientes (/etc/bacula/bacula-fd.conf):
sudo apt install bacula-client
Sancho:
Director {
Name = sancho-dir
Password = "backup"
}
Director {
Name = sancho-mon
Password = "backup"
Monitor = yes
}
FileDaemon { # this is me
Name = sancho-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /run/bacula
Maximum Concurrent Jobs = 20
Plugin Directory = /usr/lib/bacula
FDAddress = 10.0.1.8
}
Messages {
Name = Standard
director = sancho-dir = all, !skipped, !restored
}
Freston:
Director {
Name = sancho-dir
Password = "backup"
}
Director {
Name = sancho-mon
Password = "backup"
Monitor = yes
}
FileDaemon { # this is me
Name = freston-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /run/bacula
Maximum Concurrent Jobs = 20
Plugin Directory = /usr/lib/bacula
FDAddress = 10.0.1.3
}
Messages {
Name = Standard
director = sancho-dir = all, !skipped, !restored
}
Dulcinea:
Director {
Name = sancho-dir
Password = "backup"
}
Director {
Name = sancho-mon
Password = "backup"
Monitor = yes
}
FileDaemon { # this is me
Name = dulcinea-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /run/bacula
Maximum Concurrent Jobs = 20
Plugin Directory = /usr/lib/bacula
FDAddress = 10.0.1.5
}
Messages {
Name = Standard
director = sancho-dir = all, !skipped, !restored
}
Quijote:
Director {
Name = sancho-dir
Password = "backup"
}
Director {
Name = sancho-mon
Password = "backup"
Monitor = yes
}
FileDaemon { # this is me
Name = quijote-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /run/bacula
Maximum Concurrent Jobs = 20
Plugin Directory = /usr/lib/bacula
FDAddress = 10.0.2.4
}
Messages {
Name = Standard
director = sancho-dir = all, !skipped, !restored
}
Comments