Está en la página 1de 14

Montar Servidor Bacula

Que es Bacula?

Bacula es una coleccin de herramientas de respaldo, capaces de cubrir las


necesidades de respaldo de equipos bajo redes IP. Se basa en una arquitectura
Cliente-servidor que resulta eficaz y fcil de manejar, dada la amplia gama de
funciones y caractersticas que brinda; copiar y restaurar ficheros daados o
perdidos. Adems, debido a su desarrollo y estructura modular, Bacula se adapta
tanto al uso personal como profesional, para parques de ordenadores muy
grandes. por Wikipedia.

Bacula nos va a permitir centralizar las copias de seguridad de los equipos de


la red en el servidor, independientemente del sistema operativo que estos usen.

Bacula es software libre, open source, gratuito, multiplataforma y bastante


eficaz.

Hay otras alternativas que quizs no llegan a la altura de Bacula como:

Symatec Backup Exec (Windows)


Fbackup (Windows)
Amanda (Linux)

Arquitectura para entender un poco como funciona bacula


Director (DIR, bacula-director) es el programa servidor que supervisa todas las
funciones necesarias para las operaciones de copia de seguridad y restauracin.
Es el eje central de Bacula y en l se declaran todos los parmetros necesarios.
Se ejecuta como un demonio en el servidor.

Storage (SD, bacula-sd) es el programa que gestiona las unidades de


almacenamiento donde se almacenarn los datos. Es el responsable de escribir y
leer en los medios que utilizaremos para nuestras copias de seguridad. Se
ejecuta como un demonio en la mquina propietaria de los medios utilizados. En
muchos casos ser en el propio servidor, pero tambin puede ser otro equipo
independiente.

Catalog es la base de datos (MySQL en nuestro caso) que almacena la informacin


necesaria para localizar donde se encuentran los datos salvaguardados de cada
archivo, de cada cliente, etc. En muchos casos ser en el propio servidor, pero
tambin puede ser otro equipo independiente.

Console (bconsole) es el programa que permite la interaccin con el Director


para todas las funciones del servidor. La versin original es una aplicacin en
modo texto (bconsole). Existen igualmente aplicaciones GUI para Windows y Linux
(Webmin, Bacula Admin Tool, Bacuview, Webacula, Reportula, Bacula-Web, etc).

File (FD) Este servicio, conocido como cliente o servidor de ficheros est
instalado en cada mquina a salvaguardar y es especfico al sistema operativo
donde se ejecuta. Responsable para enviar al Director los datos cuando este lo
requiera.

La Jerga de Bacula

Para poder manejar Bacula es importante conocer ciertos conceptos:

Un backup consiste en una tarea (JOB), un conjunto de directorios/archivos


(FILESET), un cliente (CLIENT), un horario (SCHEDULE) y unos recursos (POOL).
En otros trminos, el Fileset es lo que vamos a salvaguardar, el Client es
la proveniencia de los datos, el Schedule determina cuando lo vamos a ejecutar y
el Pool es el destino de la copia de seguridad.
Tpicamente una combinacin CLIENT/FILESET generar un determinado JOB.
Adems de los JOB de backup, existirn tambin JOB de restore y otros de
control y administracin.
Los medios de almacenamiento se definen como POOL. El POOL es un conjunto de
volmenes, son ficheros que actan como un disco duro dentro de ellos estn las
copias de seguridad.
Instalar webmin para tener un control mas eficiente de bacula

Que es Webmin?

Webmin es una interfaz basada en web para administracin de sistemas para


servidores basados en Linux. Es uno de los paneles de control de hosting de
cdigo abierto ms populares.

Procedemos a ocupar el repositorio yum para la instalacin

Otra forma de instalar Webmin es utilizando el repositorio oficial de YUM.


Primero, crea un archivo webmin.repo:

# nano /etc/yum.repos.d/webmin.repo

Agregue el siguiente contenido al archivo y gurdelo.

[Webmin]
name=Webmin Distribution Neutral
#baseurl=http://download.webmin.com/download/yum
mirrorlist=http://download.webmin.com/download/yum/mirrorlist
enabled=1

A continuacin, obtenga e instale la clave GPG que se utiliza para firmar los
paquetes Webmin:

# wget http://www.webmin.com/jcameron-key.asc
# rpm --import jcameron-key.asc

Finalmente, instale Webmin y todas las dependencias utilizando el siguiente


comando:

# yum install webmin

activar webmin

# service webmin start

acceder a al panel web de webmin para administrar programas

Procedemos a abrir algun navegador y copiamos esta direccion

https://TU_IP:10000
Instalacion Mysql (mariadb)

sudo yum install -y mariadb-server

Activar mariadb

sudo systemctl start mariadb

Ahora que MySQL (MariaDB) est instalado y en ejecucin, vamos a crear el


usuario de la base de datos Bacula y tablas, con estos scripts:

/ usr / libexec / bacula / grant_mysql_privileges


/ usr / libexec / bacula / create_mysql_database -u raz
/ usr / libexec / bacula / make_mysql_tables -u bacula

A continuacin, queremos ejecutar un script de seguridad simple que eliminar


algunos valores predeterminados peligrosos y bloquear el acceso a nuestro
sistema de base de datos un poco. Inicie el script interactivo ejecutando:

sudo mysql_secure_installation

La solicitud le pedir su contrasea de root actual. Puesto que acaba de


instalar MySQL, lo ms probable es que no tenga uno, as que djelo en blanco
pulsando enter. A continuacin, el indicador le preguntar si desea establecer
una contrasea de root. Contine y pulse Enter , y establezca la contrasea.
Para el resto de las preguntas, simplemente debe pulsar la tecla Enter travs de
cada solicitud para aceptar los valores predeterminados. Esto eliminar algunos
usuarios de ejemplo y bases de datos, inhabilitar los inicios de sesin de root
remoto y cargar estas nuevas reglas para que MySQL respete inmediatamente los
cambios que hemos hecho.

Ahora necesitamos establecer la contrasea para el usuario de la base de datos


Bacula.

Introduzca la consola de MySQL, como usuario root de MySQL:

mysql -u root -p

Ahora configure la contrasea para el usuario de la base de datos Bacula.


Utilice este comando, pero reemplace la "bacula_db_password " resaltada con una
contrasea a su gusto:

UPDATE mysql.user SET Password=PASSWORD('bacula_db_password') WHERE


User='bacula';
FLUSH PRIVILEGES;

Una vez que haya terminado aqu, salga de maria db:

exit
Elegir cual librera Mysql se ocupara como predeterminada

sudo alternatives --config libbaccats.so

There are 3 programs which provide 'libbaccats.so'.

Selection Command
-----------------------------------------------
1 /usr/lib64/libbaccats-mysql.so
2 /usr/lib64/libbaccats-sqlite3.so
*+ 3 /usr/lib64/libbaccats-postgresql.so

en este caso se elige la primera ya que ocupamos maria db : 1

Crear directorios de copia de seguridad y restauracin


Bacula necesita un directorio de copia de seguridad , para almacenar archivos de
copia de seguridad y restaurar el directorio, donde se colocarn los archivos
restaurados. Si su sistema tiene varias particiones, asegrese de crear los
directorios en uno que tenga suficiente espacio.

Creamos nuevos directorios para estos dos propsitos:

sudo mkdir -p /bacula/backup /bacula/restore

otorgamos permisos de usuarios

sudo chown -R bacula: bacula / bacula


sudo chmod -R 777 / bacula
Instalacion de bacula:

# yum install bacula-*

Configuracion de la consola

# vi /etc/bacula/bconsole.conf

Director {

Name = lokesh-bacula-server.com-dir # Nombre del director

DIRport = 9101 # puerto en el que escucha

address = 172.17.20.100 # ip del director

Password = "server32" # password a utilizar


}

Step 5:

Lugar donde se guardara los backups

Storage {
Name = lokesh-bacula-storage.com-sd #
SDPort = 9103 #
WorkingDirectory = "/var/spool/bacula"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
SDAddress = 172.17.20.100
}

Director {
Name = lokesh-bacula-server.com-dir #
Password = "server32" #
}
Autochanger {
Name = NAS-Server # c
Device = NAS #
Changer Command = ""
Changer Device = /dev/null
}

Device {
Name = NAS # Device name
Media Type = File
Archive Device = /backup/nas # Backup Path server
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
Maximum Concurrent Jobs = 5
}
Messages {
Name = Standard
director = centos-bacula-server-dir = all # set Director
}
Check configuration file

# bacula-sd -tc /etc/bacula/bacula-sd.conf

########### Director Section ##############

Director {
Name = lokesh-bacula-server.com-dir # should be Same on bconsole.conf
DIRport = 9101 # should be Same on bconsole.conf
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/var/spool/bacula"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 20
Password = "server32" # should be Same on bconsole.conf
Messages = Daemon
DirAddress = 172.17.20.100 # should be Same on bconsole.conf
}
##### aqu se coloca cuando se hace la tarea o backups ###

Schedule {
Name = "SundayCycle"
Run = Level=Full sun at 1:00
Run = Level=Differential wed at 2:00
Run = Level=Incremental mon tue thu fri sat at 1:00

Schedule {
Name = "WeeklyCycle"
Run = Full 1st sun at 23:05
Run = Differential 2nd-5th sun at 23:05
Run = Incremental mon-sat at 23:05
}
# This schedule does the catalog. It starts after the WeeklyCycle

Schedule {
Name = "WeeklyCycleAfterBackup"
Run = Full sun-sat at 23:10
}

######## seccin de almacenamiento ###################

Storage {
Name = bacula-sd # cambiar al nombre que desees
Address = 192.168.30.40 # ip del disco duro el cual puede ser el mismo
servidor o algun otro
SDPort = 9103 # puerto en el que escucha
Password = "server2" # Match on bacula-sd.conf
Device = NAS-Server # Autochange name
Media Type = File
Maximum Concurrent Jobs = 10 # trabajos que se pueden realizar

Seccin catalogo la cual es una de las importantes dentro

Catalog {
Name = MyCatalog #nombre asignado a la base de datos de bacula podria cambiar
si lo desea
dbname = "bacula"; dbuser = "bacula"; dbpassword = "password de usuario mysql"
}
Go to the end Add Line at the end of file for Remote Client Configuration

@|"find /etc/bacula/conf.d -name '*.conf' -type f -exec echo @{} \;"

Save And Exit

Configuracin clientes :

Creacin de conf.d

# mkdir /etc/bacula/conf.d

Create Remote Client File :

# vi /etc/bacula/conf.d/md-client.com

Client 1:

# Md Client Information

Client {:
Name = md-client.com-fd #Client Name : will be match on bacula-fd.conf on
client side
Address = 172.17.20.140 #Client IP
FDPort = 9102 #Port
Catalog = MyCatalog
Password = "server32" # Password : will be match on bacula-fd.conf on
client side
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}

##Job For Backup ##

JobDefs {
Name = "md-client-job"
Type = Backup
Level = Differential
Client = md-client.com-fd # Client name :will be match on bacula-fd.conf
on client side
FileSet = "md-client-fileset"
Schedule = "SundayCycle" # schedule : see in bacula-dir.conf
Storage = Centos-Bacula-NAS
Messages = Standard
Pool = md-client-pool
Priority = 10
Write Bootstrap = "/var/spool/bacula/%c.bsr"
}

Job {
Name = "md-client-Backup"
Client = md-client.com-fd # Client name : will be match on bacula-fd.conf
on client side
JobDefs = "md-client-job"
}

##Job For Restore ##

Job {
Name = "md-client-Restore"
Type = Restore
Client= md-client.com-fd # Client name : will be match on bacula-fd.conf
on client side
FileSet= "md-client-fileset"
Storage = Centos-Bacula-NAS
Pool = md-client-pool
Messages = Standard
Where = /restore # Restore Directory
}

## File set : directorio el cual se va a respaldar ##

FileSet {
Name = "md-client-fileset"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /var/www/html/
File = /etc

## directorios excluidos ##

Exclude {

File = /var/spool/bacula
File = /proc
File = /tmp
File = /.journal
File = /.fsck
File = /backup
}
}

## agrupado ##

Pool {
Name = md-client-pool #
Pool Type = Backup
Recycle = yes
Label Format = md-client-backup-file- # set volume label format
AutoPrune = yes
Volume Retention = 180 days
Maximum Volume Bytes = 50G
Maximum Volumes = 100
}
bacula-client-2.png

save and exit file

Client 2:

# vi /etc/bacula/conf.d/hs-client.conf

# HS Client Information #

Client {

Name = hs-client.com-fd #Client Name : will be match on bacula-fd.conf on


client side
Address = 172.17.20.140 #Client IP or Best option is fully qualified
domain name
FDPort = 9102 #Port
Catalog = MyCatalog
Password = "server32" # Password : will be match on bacula-fd.conf on
client side
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}

##Job For Backup ##

JobDefs {
Name = "hs-client-job"
Type = Backup
Level = Differential
Client = hs-client.com-fd # Client name :will be match on bacula-fd.conf on
client side
FileSet = "hs-client-fileset"
Schedule = "SundayCycle" # schedule : see in bacula-dir.conf
Storage = Centos-Bacula-NAS
Messages = Standard
Pool = hs-client-pool
Priority = 10
Write Bootstrap = "/var/spool/bacula/%c.bsr"
}

Job {
Name = "hs-client-Backup"
Client = hs-client.com-fd # Client name : will be match on bacula-
fd.conf on client side
JobDefs = "hs-client-job"
}

## Job For Restore ##

Job {
Name = "hs-client-Restore"
Type = Restore
Client= hs-client.com-fd # Client name : will be match on bacula-fd.conf
on client side
FileSet= "hs-client-fileset"
Storage = Centos-Bacula-NAS
Pool = hs-client-pool
Messages = Standard
Where = /restore # Restore Directory

# File set : Select Directory for Backup #

FileSet {
Name = "hs-client-fileset"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /var/www/html/
File = /etc
}
Exclude {
File = /var/spool/bacula
File = /proc
File = /tmp
File = /.journal
File = /.fsck
File = /backup
}
}

## Pool Configuration ##

Pool {
Name = hs-client-pool # pool name
Pool Type = Backup
Recycle = yes
Label Format = hs-client-backup-file- # set volume label format
AutoPrune = yes
Volume Retention = 180 days
Maximum Volume Bytes = 50G
Maximum Volumes = 100

Bacula Cliente-servidor

Procedemos a instalar bacula cliente

yum -y install bacula-client bacula-console

Entramos al archivo de configuracin de el cliente bacula

vi /etc/bacula/bacula-fd.conf
y procedemos a configurar el archivo configuracin

Director {
Name = bacula-dir

# line 15: specify Director daemon's password

Password = "
password
"
}
# line 22-26: comment out

#
Director {
#
Name = bacula-mon
#
Password = "@@MON_FD_PASSWORD@@"
#
Monitor = yes
#
}
ahora vamos al archivo de configuracin de la consola

vi /etc/bacula/bconsole.conf

cambiamos los siguientes parametros

Director {
Name = bacula-dir
DIRport = 9100
# Ip del director o servidor
address = 192.168.30.40
# password del director
Password = "password"

luego activamos el servicio en centos 7

systemctl start bacula-fd


systemctl enable bacula-fd