6 minute read

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
}

Categories:

Updated:

Comments