Montando um completo servidor de backup usando Bacula

Apresento o Bacula, poderosa plataforma cliente/servidor de backup. Com esse programa será possível implantar uma completa solução de cópia de dados em disco e/ou fita. Esse artigo tem caráter introdutório sobre o Bacula, servindo como referência na sua instalação e configuração. Quem busca uma ótima ferramenta de backup open source, completa em opções e de fácil configuração, Bacula é 10!

[ Hits: 331.062 ]

Por: Sandro Mendes em 29/12/2004


Considerações finais



Minha idéia principal nesse artigo é divulgar essa excelente e poderosa ferramenta de Backup, transmitindo um conteúdo introdutório do Bacula e todas as opções que ele nos oferece. Existem hoje muitas opções de backup, mas essa ferramenta foi a mais completa e de fácil configuração encontrada, qualquer administrador com conhecimentos básicos não irá encontrar problemas.

Para obter maiores informações sobre os parâmetros de configuração, consulte o manual, rico em informações. Ah, e também os fóruns de discussão sobre o Bacula, e o canal IRC (#bacula). O pessoal ajuda mesmo.

Espero ter ajudado a quem procura uma ótima solução em segurança dos dados e agora é com vocês :-)

Abraços
Sandro Ricardo Mendes

Página anterior    

Páginas do artigo
   1. Introdução
   2. Configuração do Bacula
   3. Administrando o Bacula
   4. Considerações finais
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Arpwatch - Detecte em sua rede ataques de Arp Spoofing/Arp Poisoning

Bloqueio de usuários com o chroot

Criptografia quântica

Instalando a nova versão do HLBR - IPS invisível

Autenticação de servidores CentOS/Red Hat 6 em Windows 2008

  
Comentários
[1] Comentário enviado por fabio em 29/12/2004 - 23:13h

Excelente artigo, parabéns! Com certeza vou testar essa ferramenta aqui em casa e em clientes, ainda mais porque ela faz parte do repositório oficial da distribuição Debian:

# apt-cache search bacula

- bacula
- bacula-client
- bacula-console
- bacula-console-gnome
- bacula-director-mysql
- bacula-director-pgsql
- bacula-director-sqlite
- etc

[]'s

[2] Comentário enviado por jabuka em 30/12/2004 - 09:00h

Pessoal, gostaria de acrescentar um comando que ficou faltando no artigo. Segundo o apresentado, o backup será diário, com cada fita recebendo uma label. Porém, quando o trabalho se inicia, o dispositivo (no caso a fita) precisa estar montada; dai precisaríamos entrar no console e entrar com o comando mount.
Para automatizar esse processo, insira no bacula-dir.conf, dentro do parâmetro job (o primeiro a ser executado) a seguinte linha:
RunBeforeJob = "/usr/local/etc/monta_tape.sh"
Depois, é só criar esse script:
#!/bin/sh
/usr/local/sbin/bconsole -c /usr/local/etc/bconsole.conf <<END_OF_DATA
mount
quit
END_OF_DATA

Desculpem pela falha... espero ter ajudado :-)
Abraços
Sandro Mendes

[3] Comentário enviado por ThE_BoOt em 30/12/2004 - 10:20h

Excelente artigo, agora vamos ao aprofundamento... :) procurar a página oficial do bacula e ver se tem clientes para windows, se grava em cd, etc...

Parabens Sandro

[4] Comentário enviado por rjacomel em 30/12/2004 - 15:46h

Parabéns Sandro!

Excelente artigo! Baseado nele fiz uma configuração utilizando Red Hat 9 e BD MySQL com armazenamento dos backups em disco e deu tudo certo.

Valew

Ricardo Jacomel

[5] Comentário enviado por apscherbach em 27/10/2005 - 09:48h

Ótimo artigo.

Mas no caso, se eu quiser fazer o backup em um hd, eu tenho que criar um "dipositivo" para cada dia que o backup for ser executado? Na mesma estrutura das fitas usadas no artigo, só que com pastas em um hd?
É isso?

Adriano Scherbach

[6] Comentário enviado por removido em 03/10/2006 - 14:41h

ASPCHERBACH DA UMA SACADA E VE SE DA PRA ENTENDER, ESSES ARQUIVOS SAO PRA CRIAR OS VOLUMES NO HD,COMO VC QUERIA

######################################################################################
## ##
## bacular-dir.conf ##
## ##
######################################################################################

Director { # define myself
Name = slsjainfra-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/work/bacula/working"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 1
Password = "teste" # Console password
Messages = Standard
}

# OBSERVACOES

# Pool 'PoolSeg...PoolSex' recebem os backups diarios. Tem retencao de 7 dias.

# Sequencia de definicao seguida no esquema deste arquivo de configuracao:
# 1) definicao de 'SCHEDULER'
# 2) definicao de 'JOB' e seu 'FILESET'
# 3) definicao de 'CLIENT'
# 4) definicao de 'STORAGE'
# 5) definicao de 'CATALOG'
# 6) definicao de 'MESSAGE'
# 7) definicao de 'POOL'


### DEFINICOES SCHEDULES #################################################################

#Schedule salteado, podendo fazer um full na segunda e na terca e os demais dias fazer incremental nesses volumes
Schedule {
Name = "Diario"
Run = Level=Full Pool=Pool_01 Monday at 08:46am # segunda, quarta e sexta incremental no memso pool
Run = Level=Full Pool=Pool_02 Tuesday at 08:46am # terca, quinta e sabado incremental
}

### DEFINICOES JOBS/FILESETS ############################################################

## Configuracoes genericas para a maioria dos JOBS
Job {
Name = "Backup_01"
Type = Backup
Level = Full
Schedule = "Diario"
# JobDefs = "DefaultJob"
Client = slsja0402-fd #############backup para o disco local###################
Messages = Standard
FileSet = "diarioFS"
Write Bootstrap = "/work/bacula/working/backup_02.bsr"
Priority = 1 # run after main backup
Storage = armlocal
Pool =Pool_01
}

Job {
Name = "Backup_02"
Type = Backup
Level = Full
Schedule = "Diario"
# JobDefs = "DefaultJob"
Client = slsja0402-fd #############backup para o disco local###################
Messages = Standard
FileSet = "diarioFS"
Write Bootstrap = "/work/bacula/working/Backup_02.bsr"
Priority = 1 # run after main backup
Storage = armlocal
Pool = Pool_02
}

#Este tipo de configuracao de File Set e feita para backup de clientes Windows
FileSet {
Name = "diarioFS"
Include {
Options {
compression= GZIP
IgnoreCase = yes
}
File = "c:/pacotes"
}
}
#----------------------------------------------------------------------------------------
###########JOBS DE RESTORE PARA SEREM USADOS NO CONSOLE###########################
Job {
Name = "Restaurar_01"
Bootstrap = "/work/bacula/working/backup_01.bsr"
Type = Restore
Client = slsja0402-fd
FileSet = "diarioFS"
Storage = armlocal
Messages = Standard
Pool = Pool_01
Where = ""
}

Job {
Name = "Restaurar_02"
Bootstrap = "/work/bacula/working/backup_02.bsr"
Type = Restore
Client = slsja0402-fd
FileSet = "diarioFS"
Storage = armlocal
Messages = Standard
Pool = Pool_02
Where = ""
}

## DEFINICOES DOS CLIENTES FILEDAEMON ####################################################
#RESPONSAVEL PELA COMUNICACAO COM O CLIENTE
Client {
Name = slsja0402-fd
Address = 192.168.0.165
FDPort = 9102
Catalog = MyCatalog
Password = "teste" # password for FileDaemon
File Retention = 2 months
Job Retention = 2 months
AutoPrune = yes # Prune expired Jobs/Files
}

# Definiton of file storage device #######################################################
Storage {
Name = armlocal
Address = slsjainfra
SDPort = 9103
Password = "teste"
Device = dev-arquivo
Media Type = File
Autochanger = yes
}

Catalog {
Name = MyCatalog
dbname = bacula; user = bacula; password = ""
}

Messages {
Name = Standard
console = all, !skipped, !saved
append = "/work/bacula/working/log" = all, !skipped
}

#----------------------------------------------------------------------------------------
# Default pool definition

# Pool para backup na Segunda com retencao de 7 dias
Pool {
Name = Pool_01
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Use Duration = 23h
LabelFormat = "Vol"
Volume Retention = 90 days #
Accept Any Volume = yes # write on any volume in the pool
}

#----------------------------------------------------------------------------------------
# Pool para backup na Terca com retencao de 7 dias
Pool {
Name = Pool_02
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
Volume Use Duration = 23h
LabelFormat = "Vol"
AutoPrune = yes # Prune expired volumes
Volume Retention = 90 days #
Accept Any Volume = yes # write on any volume in the pool
}
#---------------------------------------------------------------------------------------

************************************************************

################################################################
# Default Bacula Storage Daemon Configuration file #
################################################################
# For Bacula release 1.38.4 (14 January 2006) -- redhat (Stentz)
#
# 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 = slsjainfra-sd
SDPort = 9103 # Director's port
WorkingDirectory = "/var/bacula"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
}

#
# List Directors who are permitted to contact Storage daemon
#
Director {
Name = slsjainfra-dir
Password = "teste"
}

# Devices supported by this Storage daemon
# To connect, the Director's bacula-dir.conf must have the
# same Name and MediaType.
#

Device {
Name = dev-arquivo
Media Type = File
Archive Device = /etc/bacula/backup
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
SpoolDirectory = /tmp/backup;
LabelMedia = yes;
}
#Posso criar outros devices de outros clientes para outros clientes,com LabelMedia=yes tambem, nos mesmos pool diarios,
#mas com nomes de volumes diferentes.
#Device {
# Name = DDS3
# Description = "DDS-3 for Fedora"
# Media Type = DDS-3
# Archive Device = /dev/st0
# AutomaticMount = yes; # when device opened, read it
# AlwaysOpen = yes;
# Offline On Unmount = no;
# Hardware End of Medium = no;
# BSF at EOM = yes;
# Backward Space Record = no;
# Fast Forward Space File = no;
# TWO EOF = yes;
#}

Device {
Name = DDS3
Media Type = DDS-3
Archive Device = /dev/st0
AutomaticMount = yes; # when device opened, read it
Offline On Unmount = yes
AlwaysOpen = yes;
RemovableMedia = yes;
Hardware End of Medium = No
BSF at EOM = yes
}

# Send all messages to the Director,
# mount messages also are sent to the email address
Messages {
Name = Standard
director = slsjainfra-dir = all
operator = root = mount
}

************************************************************

#################################################################
# Default Bacula File Daemon Configuration file #
#################################################################
# For Bacula release 1.38.4 (14 January 2006) -- redhat (Stentz)
#
# 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 = slsjainfra-dir
Password = "teste"
}

#
# Restricted Director, used by tray-monitor to get the
# status of the file daemon
#
Director {
Name = slsjainfra-dir
Password = "teste"
Monitor = yes
}

#
# "Global" File daemon configuration specifications
#
FileDaemon { # this is me
Name = slsjainfra-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/bacula
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
}

# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = slsjainfra-dir = all, !skipped
}

[7] Comentário enviado por c.rafael em 04/01/2008 - 10:44h

OPa, ...

vc já usaram SNMP no bacula? Quero monitotar o mesmo, mas quando do o comando: "./configure --help" não aparece nada sobre SNMP.

Alguém saberia me dizer como eu faço?

[8] Comentário enviado por tecnoplace em 10/03/2008 - 13:23h

amigos eu fiz as configuracoes ai mas o meu bacula director daemon esta como down. uso o webadmin para administrar o servidor linux. qdo eu mando reiniciar o bacula aparece a seguinte mensagem.
Failed to start Bacula : No init script found for bacula-dir
o q pode ser???

[9] Comentário enviado por timbeh em 19/05/2008 - 10:34h

Como faço para ter um storage em outro servidor?
Obrigado!

[10] Comentário enviado por anakoliveira em 11/06/2008 - 15:10h

Sandro, excelente artigo. Estou tentando configurar o Bacula aqui na empresa, porém estou encontrando algumas dificuldades.

1º Utilizo o Fedora 8;
2º Banco Postgre;
3º Configurei o banco e os arquivos da maneira como orientou, porém ao subir os serviços, ocorre o erro: "Starting bacula-dir: grep: /etc/bacula/bacula-dir.conf: Arquivo ou diretório não encontrado
11-Jun 15:01 bacula-dir: ERROR TERMINATION at parse_conf.c:819
Config error: Cannot open config file "/etc/bacula/bacula-dir.conf": Arquivo ou diretório não encontrado [FALHOU]". Este erro ocorre para os 3 serviços;
4º Outra coisa, quero configurar o meu backup para armazenar em uma unidade externa (HD), como faço?

Aguardo resposta.

Um abraço,

Ana Carpes
[email protected]

[11] Comentário enviado por desenvolvedormg em 12/06/2008 - 14:21h

Opa, muito boa a matéria me ajudou e muito.
Porem ainda estou com algumas dificuldades.

Seguinte, tenho um script que ja cria um backups do meu banco de dados e das pastas dos scripts.

Ele funfa da seguinte forma.. A cada 1 hora crio 1 backup full do banco de dados e limito o numero de arquivos que irei guardar a 24 arquivos...
Já os scripts eu crio um backup full todo dia e limito a 7 arquivos. entao eu tenho 1 arquivo por semana..

Porem esses backups ficam muito grandes, entao queria fazer da seguinte forma... continuar com 24 arquivos para o banco de dados backpeando a cada 1 hora(No bacula eu nao consegui separar os backups, todos os backups estao indo para o mesmo volume, entao 1 acaba subistituindo o outro).... ja os scripts eu queria backupear 1 full a cada segunda feira e incremental durante a semana(Consegui fazendo 1 pool para cada dia da semana, porem quando chega na outra segunda eu perco o full da semana passada ai nao faz sentido existirem os incrementais...).

A minha duvida é a seguinte... como faço para que assim que fechar a semana eu mudar de volume e assim que chegar a um tanto de volumes eu voltar para o inicio e começar a sequencia dnovo?


Forte abraço.

Wladiston Paiva
[email protected]

[12] Comentário enviado por jacoramos em 06/08/2008 - 10:58h

Pessoal bom dia..

Amigos nao sei se na minha fita está gravando por cima ou continuando a gravacao de onde parou ..

Dei um: list volumes
Pool: Quarta
+---------+------------+-----------+---------+----------+----------+--------------+---------+------+-----------+-----------+---------------------+
| MediaId | VolumeName | VolStatus | Enabled | VolBytes | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten |
+---------+------------+-----------+---------+----------+----------+--------------+---------+------+-----------+-----------+---------------------+
| 13 | VQUARTA | Append | 1 | 129,024 | 1 | 518,400 | 1 | 0 | 0 | DAT-72 | 2008-08-06 08:59:29 |
+---------+------------+-----------+---------+----------+----------+--------------+---------+------+-----------+-----------+---------------------+

E em VolStatus = Append , parece que esta gravando na sequencia e nao por cima como prentendo..

Vcs me confirma isso que falei ???

Ou por default a gravacao na fita já sobrescreve o conteudo existente ??w

Grato.

Jacó Ramos

[13] Comentário enviado por jacoramos em 14/08/2008 - 09:41h

Pessoal tem um forum muito legal do bacula no link:

http://forum.tambis.org/viewforum.php?f=13

Grato.

Jacó Ramos

[14] Comentário enviado por jacoramos em 14/08/2008 - 09:44h

Pessoal acho que a minha reciclagem automatica nao está funcionando.

Hoje sao quarta dia 13 e quando dou um *list volumes veja o que retorna:

Pool: Quarta
+---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+
| MediaId | VolumeName | VolStatus | Enabled | VolBytes | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten |
+---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+
| 13 | VQUARTA | Append | 1 | 1,281,595,392 | 3 | 518,400 | 1 | 0 | 0 | DAT-72 | 2008-08-06 22:02:21 |
+---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+--------


Veja que a ultima vez que escrevi foi dia 06 - na quarta passada. E o status continua Append.

Não era pra estar com outro status pois ja se passaram os 6 dias lá da configuracao do Pool.

Veja meu Pool de Quarta:

Pool {
Name = Quarta
Pool Type = Backup
AutoPrune = yes
Volume Retention = 6 days
Recycle = Yes
}


Alguem tem alguma dica do que possa ser checado pra ver se a reciclagem esta funcionando /????


Grato.

Jacó Ramos

[15] Comentário enviado por gordux em 19/11/2008 - 16:39h

Senhores,
Estou com um problema que é o seguinte, estou fazendo um teste com o bacula e coloquei o schedule full para rodar 1:00pm e um Incremental 1:30pm, tudo na quarta.
Ele rodou o full certinho depois ele rodou o incremental também certinho, ae para testar eu mudei a hora do full e do incremental, ae ele rodou somente o Incremental, Porque?, porque ele não rodou o full também??

Grato

[16] Comentário enviado por FireBird em 19/05/2009 - 23:40h

Opa... E ae cara... montei 1 bacula aki esses dias e to com 1 problema...

O automatic recycling dele nao ta funfando... c sabe como faço pra fazer manual?

[17] Comentário enviado por davirodrigues em 21/05/2009 - 11:15h

jabuka instalei um bacula aqui, só que estou com um problema, segue abaixo o mesmo, vê se vc pode me ajudar, ou alguem que tenha passado por isso:

*status
Status available for:
1: Director
2: Storage
3: Client
4: All
Select daemon type for status (1-4): 2
Automatically selected Storage: File
Connecting to Storage daemon File at 127.0.0.1:9103

cilindro-sd Version: 2.2.8 (26 January 2008) i486-pc-linux-gnu debian lenny/sid
Daemon started 21-May-09 11:02, 0 Jobs run since started.
Heap: heap=221,184 smbytes=10,833 max_bytes=76,108 bufs=59 max_bufs=62
Sizes: boffset_t=8 size_t=4 int32_t=4 int64_t=8

Running Jobs:
No Jobs running.
====

Jobs waiting to reserve a drive:
====

Terminated Jobs:
JobId Level Files Bytes Status Finished Name
===================================================================
1 Full 0 0 Error 19-May-09 14:37 Client1
8 Full 0 0 OK 21-May-09 09:36 Cpd02
10 Full 0 0 Cancel 21-May-09 09:48 Cpd02
====

Device status:
Device "storage" (/mnt/backup) is not open. <<<<<< # Esse é o problema, ele sempre fica assim, ja não sei o que fazer...
====

In Use Volume status:
====

====

[18] Comentário enviado por brunonunes em 11/12/2009 - 11:38h

davirodrigues tive o mesmo problema que o seu, após execuçao de um job ele desmonta a fita, resolvi esse problema configurando a opçao automount on na console de config do bacula....


estou com um problema referente ao tamanho do meu volume de dados que é maior que o tamanho das fitas que utilizo DDS-5 72 Gb..

oq sugerem como soluçao para um backup full, utilizar um pool de fitas ou utilizar uma estrategia diferente de backup full.

[19] Comentário enviado por Jeparre em 30/12/2009 - 15:37h

Olá Pessoal.
Por favor, alguém poderia me ajudar.

Quando dou start no bacula aparece o seguinte erro: ERROR TERMINATION at dird_conf.c:1352 mediatype item is required in storage resource, but not found.

Meu bacula-sd:
Storage {
Name = server-sd
SDPort = 9103
WorkingDirectory = "/var/bacula/working"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 1
}
Director {
Name = server-dir
Password = "senha"
}
Device {
Name = HD
Device Type = File
Media Type = File
Archive Device = /media/DADOS/Backup
SpoolDirectory = /media/DADOS/Backup/tmp;
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
}
Messages {
Name = Standard
director = server-dir = all
}

Desde já agradeço!!
Valeu!

Contato: [email protected]

[20] Comentário enviado por tiago.pacato em 25/03/2010 - 10:15h

Instalei o servidor bacula em uma maquina normal com hds de 250 gb, os backups estão sendo feitos normalmente, os catalagos criados, tudo ok. a dúvida é, para passar os backups que ja foram feitos nessa maquina para uma maquina nova que acabamos de adquirir, o que eu poderia fazer? para não perder o que ja foi feito no servidor bacula antigo.

Grato!


contato: [email protected]

[21] Comentário enviado por JJSantos em 11/03/2017 - 01:19h


[20] Comentário enviado por tiago.pacato em 25/03/2010 - 10:15h

Instalei o servidor bacula em uma maquina normal com hds de 250 gb, os backups estão sendo feitos normalmente, os catalagos criados, tudo ok. a dúvida é, para passar os backups que ja foram feitos nessa maquina para uma maquina nova que acabamos de adquirir, o que eu poderia fazer? para não perder o que ja foi feito no servidor bacula antigo.

Grato!


contato: [email protected]


Copiar as configuração, ou faz uma imagem do servidor.


Contribuir com comentário