You are on page 1of 10

Instalao e Configurao do servidor de

backup BACULA
Igor Muzetti Pereira
igormuzetti@gmail.com
Tiago Garcia de Senna Carneiro
tiago@iceb.ufop.br
Departamento de Computao
Universidade Federal de Ouro Preto

Laboratrio Associado INPE/UFOP para Modelagem e Simulao de


Sistemas Terrestres

___________________________________________________________
Instalao e Configurao do servidor de backup BACULA
1. Introduo
O objetivo deste tutorial mostrar como instalar e configurar o Bacula
que um conjunto de programas que permite ao administrador de sistemas
administrar backup, restaurao e verificao dos dados de computadores em
uma rede de sistemas mistos.

1.1. Ferramentas necessrias


O exemplo descrito neste tutorial foi implementado sobre uma
plataforma constituda pelo sistema operacional Linux Debian Lenny (5.0.5) e o
software Bacula (5.0.3).

1.2. Como funcionam os mdulos do Bacula


1.2.1. Director Daemon: Este servio responsavel pela administrao
de todos os processos de backup, restaurao, verificao e arquivamento. O
Administrador de Sistema usa o Director Daemon para efetuar agendamentos
de backup e para recuperar arquivos.

1.2.2. Console Manager: Este programa ajuda o administrador ou o


usurio a se comunicar com o Director Daemon,
qualquer computador da rede e em sistemas
atualmente existem 3 verses do Console Manager:
interface grfica usando bibliotecas do Gnome e

pode ser executado em


operacionais diferentes,
em texto puro (TTy), em
uma usando bibliotecas

wxWidgets (tanto em formato Unix quanto em Windows).

1.2.3. File Daemon: Este servio (ou programa cliente) o software que
instalado na mquina que vai ser protegida pelo backup, ou seja, ele vai ser
responsvel por enviar os arquivos solicitados pelo Director Daemon pela rede.
Ele tambm responsavel em administrar a gravao dos arquivos de
restaurao comandados pelo Director Daemon.

1.2.4. Storage Daemon: Este servio consiste em administrar a


gravao e restaurao dos dados e atributos dos backups fisicamente em
midias apropriadas, essas podem ser volume de dados gravados diretamente
no disco rigido ou alguma mdia removvel (Fita DAT, DVD, CD, HD, etc).

1.2.5. Catalog: O servio de catalogo o programa responsvel por


manter uma indexao de todos os arquivos que so armazenados no backup
e gerar uma base de dados dos volumes gerenciados pelo Director Daemon. O
Catalog agiliza a busca de um arquivo no backup na hora que o administrador
de sistema necessita efetuar uma restaurao, como ele mantm uma base de
indexao dos arquivos gravados, a busca por um arquivo no meio dos
volumes mais rpida.

2. Instalao e configurao dos componentes


Os passos de instalao e configurao do Bacula e seus componentes
descritos nas sees seguintes so baseados no sistema operacional Debian
Lenny (5.0.5) e em uma conta de usurio com permisses de administrao
em tal sistema.

2.1. Instalao do banco de dados:


Acesse o terminal e como root, execute o comando para instalar o
servidor de banco da dados:
# apt-get install mysql-server
Agora, inicie o banco de dados atravs do comando:
# /etc/init.d/mysql start

2.2. Download do cdigo fonte do Bacula:


Faa o download do arquivo .tar.gz mais recente do Bacula em:
http://sourceforge.net/projects/bacula/files/
Entre no diretrio que voc fez o download e descompacte o arquivo,
como comando:
# tar -xzvf bacula-5.0.3.tar.gz (onde o nome do arquivo sublinhado

deve ser alterado para o nome do arquivo que voc baixou).

2.2.1. Instalando as dependncias:


# apt-get install gcc
# apt-get install build-essential
# apt-get install libssl-dev
# apt-get install libmysql++-dev

2.2.2. Compilando o Bacula:


V para a pasta que voc descompactou o bacula.
Configure a compilao para uso com o Mysql:
# ./configure with-mysql
E, ento:
# make
# make install

2.2.3. Configurando o banco de dados do Bacula:


Se dirija para a pasta:
#cd /etc/bacula
E ento execute os trs scripts abaixo. O primeiro cria o banco, o
segundo as tabelas, o terceiro o usurio bacula no banco:
# ./create_mysql_database
# ./make_mysql_tables
# ./grant_mysql_privileges
Se voc houver configurado uma senha para o usurio root do banco
de dados, deve pass-la em cada um dos scripts acima, no seguinte formato
(exemplo, com senha 123456):
# ./create_mysql_database -u root -p123456

2.3. Inicializando o Bacula:


Na pasta, /etc/bacula/ existem uns scripts para iniciar, parar e reiniciar
o bacula:
# ./bacula start
# ./bacula stop
# ./bacula restart
Se tudo deu certo, voc dever poder acessar o Bacula atravs da
console texto:
# bconsole
Agora que est funcionando, basta ir customizando os arquivos .conf que
tambm esto na pasta, de acordo com suas necessidades. Algumas
informaes necessitam ter alteraes replicadas em mais de um lugar dentro
do mesmo arquivo .conf ou em mais de um dos arquivos (por exemplo: o
nome do director, quando alterado no bacula-dir.conf, precisa ser alterado
tambm no -sd.conf, -fd.conf e no bconsole.conf).
Exemplo dos arquivos de configurao do bacula que esto rodando nas
mquinas do TerraLAB, esto nos apndices deste tutorial.
Qualquer erro de sintaxe nos arquivos de configurao ser apontado
pelo Bacula quando do reincio dos daemons, que tambm necessrio para
aplicar as alteraes. Portanto, sempre que fizer modificaes, execute:
# /etc/bacula/bacula restart

APNDICE A
Arquivo bconsole.conf:
#
# Bacula User Agent (or Console) Configuration File
#
Director {
Name = espinhaco-dir
DIRport = 9101
address = espinhaco
Password = "terralab"
}

APNDICE B
Arquivo bacula-fd.conf:
#
#
#
#
#
#
#

#
Default Bacula File Daemon Configuration file
For Bacula release 5.0.3 (04 August 2010) -- debian 5.0.5
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 = espinhaco-dir
Password = "terralab"
}
#
# Restricted Director, used by tray-monitor to get the
# status of the file daemon
#
Director {
Name = espinhaco-mon
Password = "terralab"
Monitor = yes
}
#
# "Global" File daemon configuration specifications
#
FileDaemon {
# this is me
Name = espinhaco-fd
FDport = 9102
# where we listen for the director
WorkingDirectory = /var/bacula/working
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
}
# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = espinhaco-dir = all, !skipped, !restored
}

APNDICE C
Arquivo bacula-sd.conf:
#
# Default Bacula Storage Daemon Configuration file
#
# For Bacula release 5.0.3 (04 August 2010) -- debian 5.0.5
#
# You may need to change the name of your tape drive
# on the "Archive Device" directive in the Device
# resource. If you change the Name and/or the
# "Media Type" in the Device resource, please ensure
# that dird.conf has corresponding changes.
#
Storage {
# definition of myself
Name = espinhaco-sd
SDPort = 9103
# Director's port
WorkingDirectory = "/var/bacula/working"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
}
#
# List Directors who are permitted to contact Storage daemon
#
Director {
Name = espinhaco-dir
Password = "terralab"
}
#
# Restricted Director, used by tray-monitor to get the
# status of the storage daemon
#
Director {
Name = espinhaco-mon
Password = "terralab"
Monitor = yes
}
#
# Devices supported by this Storage daemon
# To connect, the Director's bacula-dir.conf must have the
# same Name and MediaType.
#
Device {
Name = File
Media Type = File
Archive Device = /media/backup/
LabelMedia = yes;
# lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes;
# when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}
# Send all messages to the Director,
# mount messages also are sent to the email address
#
Messages {
Name = Standard
director = espinhaco-dir = all
}

APNDICE D
Arquivo bacula-dir.conf:
#
#
#
#
#
#
#
#
#
#
#
#
#

Default Bacula Director Configuration file


The only thing that MUST be changed is to add one or more
file or directory names in the Include directive of the
FileSet resource.
For Bacula release 5.0.3 (04 August 2010) -- debian 5.0.5
You might also want to change the default email address
from root to your address. See the "mail" and "operator"
directives in the Messages resource.

Director {
# define myself
Name = espinhaco-dir
DIRport = 9101
# where we listen for UA connections
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/var/bacula/working"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 5
Password = "terralab"
# Console password
Messages = Daemon
}
Job {
Name = "espinhacoSemanalIncremental"
Enabled = Yes
Level = Incremental
Type = Backup
Client = espinhaco-fd
FileSet= "espinhaco"
Storage = File
Schedule = "espinhacoIncremental"
Pool = Semanal
# Incremental Backup Pool = Semanal
Messages = Daemon
# RunBeforeJob = "usr/sbin/monta_tape.sh"
Priority = 10
}
Job {
Name = "espinhacoFull"
Enabled = Yes
Level = Full
Type = Backup
Client = espinhaco-fd
FileSet= "espinhaco"
Storage = File
Schedule = "espinhacoFull"
Pool = Mensal
# Incremental Backup Pool = Semanal
Messages = Daemon
# RunBeforeJob = "usr/sbin/monta_tape.sh"
Priority = 10
}
# Backup the catalog database (after the nightly save)
Job {
Name = "BackupCatalog"
# JobDefs = "DefaultJob"
Level = Full
Type = Backup
Messages = Daemon
Pool = Mensal
Client = espinhaco-fd
Storage = File
FileSet="Catalog"
Schedule = "espinhacoFull"

# This creates an ASCII copy of the catalog


# Arguments to make_catalog_backup.pl are:
# make_catalog_backup.pl <catalog-name>
RunBeforeJob = "/etc/bacula/make_catalog_backup.pl MyCatalog"
# This deletes the copy of the catalog
RunAfterJob = "/etc/bacula/delete_catalog_backup"
Write Bootstrap = "/var/bacula/working/%n.bsr"
Priority = 11
# run after main backup
}
#
# Standard Restore template, to be changed by Console program
# Only one such job is needed for all Jobs/Clients/Storage ...
#
Job {
Name = "RestoreFiles"
Type = Restore
Client=espinhaco-fd
FileSet="espinhaco"
Storage = File
Pool = Mensal
Messages = Standard
Where = /media/backup/bacula-restores
}
FileSet {
Name = "espinhaco"
Include {
Options {
signature = MD5
}
File = /home
}
}
Schedule {
Name = "espinhacoIncremental"
Run = Level = Incremental Pool=Semanal Saturday at 9:00am
}
#completo mensal
Schedule {
Name = "espinhacoFull"
Run = Level = Full Pool=Mensal Sunday at 9:00am
}
# This is the backup of the catalog
FileSet {
Name = "Catalog"
Include {
Options {
signature = MD5
}
File = /var/bacula/working/bacula.sql
}
}
# Client (File Services) to backup
Client {
Name = espinhaco-fd
Address = 192.168.0.204
FDPort = 9102
Catalog = MyCatalog
Password = "terralab"
# password for FileDaemon
File Retention = 30 days
# 30 days
Job Retention = 6 months
# six months
AutoPrune = yes
# Prune expired Jobs/Files
}
# Definition of file storage device
Storage {

Name = File
# Do not use "localhost" here
Address = 192.168.0.204
# N.B. Use a fully qualified name here
SDPort = 9103
Password = "terralab"
Device = File
Media Type = File
}
# Generic catalog service
#ATENCAO use o nome de usuario e senha corretos do mysql(dbuser e dbpassword)
Catalog {
Name = MyCatalog
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:mysql"; dbaddress = 127.0.0.1; dbport =
dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
}
# Reasonable message delivery -- send most everything to email address
# and to the console
Messages {
Name = Standard
#
mailcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\"
%r"
mail = root@localhost = all, !skipped
operator = root@localhost = mount
console = all, !skipped, !saved
#
# WARNING! the following will create a file that you must cycle from
#
time to time as it will grow indefinitely. However, it will
#
also keep all your messages if they scroll off the console.
#
append = "/var/bacula/working/log" = all, !skipped
catalog = all
}
#
# Message delivery for daemon messages (no job).
Messages {
Name = Daemon
mailcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
mail = root@localhost = all, !skipped
console = all, !skipped, !saved
append = "/var/bacula/working/log" = all, !skipped
}
# Default pool definition
Pool {
Name = Semanal
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 7 days
}

# Bacula can automatically recycle Volumes


# Prune expired volumes
# one year

# File Pool definition


Pool {
Name = Mensal
Pool Type = Backup
Recycle = yes
# Bacula can automatically recycle Volumes
AutoPrune = yes
# Prune expired volumes
Volume Retention = 30 days
# one mouth
}
#
# Restricted console used by tray-monitor to get the status of the director
#
Console {
Name = espinhaco-mon
Password = "terralab"
CommandACL = status, .status
}

You might also like