Você está na página 1de 22

Instalando Bacula Backups en CentOS 7

19MAR
Posted on 19 de março de 2018Author Johnny Ferreira

Opa, tudo certo? Hoje vou mostrar como instalar o Bacula Backup no CentOS 7.

O Bacula é uma das melhores ferramentas de Backup Open Source, aliado a um sistema
operacional de confiança como CentOS 7 que tem sua base no Red Hat, conseguimos
obter confiança, bom desempenho e economia, não precisando desembolsar valores
absurdos por uma ferramenta que talvez nem atenda as necessidades de um cliente ou de

determinado projeto. Irei


abordar somente a configuração do servidor de backup com Bacula.

Iremos realizar no tutorial as tarefas abaixo:

1. Instalação do Bacula
2. Configuração do Banco de Dados
3. Configuração do Bacula Backup
4. Agendamento de Trabalhos de Backup
5. Fazer Backup
6. Restaurar o Backup

Componentes do Bacula Backup


O Bacula trabalha no modo cliente-servidor, para que toda a comunicação seja realizada
com o cliente de forma correta e segura, a ferramenta trabalha com a seguinte arquitetura:

 Bacula Director Daemon


 Bacula Storage Daemon
 Bacula File Daemon
 Bacula Catálogo
 Bacula Console

Instalando o Bacula Backup e o Banco de Dados


O Bacula utiliza estrutura de banco de dados SQL, para o armazenamento das
informações em seu catálogo, banco de dados como MySQL, PostgreSQL, para nosso
ambiente vamos utilizar o MariaDB, um substituto para o MySQL.

1 yum -y update
2 yum install -y bacula-director bacula-storage bacula-console bacula-client mariadb-server
Quando finalizar a instalação dos pacotes acima, vamos iniciar o Banco de Dados

1 systemctl start mariadb


Agora que o MySQL (MariaDB) está instalado e funcionando, vamos criar o usuário e as
tabelas de banco de dados Bacula, com esses scripts:

1 /usr/libexec/bacula/grant_mysql_privileges
2 /usr/libexec/bacula/create_mysql_database -u root
3 /usr/libexec/bacula/make_mysql_tables -u bacula
Na sequência vamos executar um script de segurança que irá remover algumas
configurações padrões que vem por default. Com o script de segurança vamos bloquear
ações perigosas e bloquear o acesso ao banco de dados.
1 mysql_secure_installation
Nosso próximo passo é definir a senha para o usuário bacula, para que o mesmo tenha
acesso ao catálogo, e faça seu trabalho direito.

Logue no console do MariaDB ou MySQL, como quiser chamar, rs!

1 mysql -u root -p
Defina a senha para o usuário do banco de dados Bacula. Utilizando o comando abaixo,
mas altere o campo “SENHA” para uma senha de sua preferência.

1 UPDATE mysql.user SET Password=PASSWORD('SENHA') WHERE User='bacula';


2 FLUSH PRIVILEGES;
3 exit
Agora vamos deixar o serviço do MariaDB ativo no boot do sistema.

1 systemctl enable mariadb


Ajustando os serviços do Bacula para iniciar junto ao boot do sistema linux.

1 systemctl enable bacula-dir


2 systemctl enable bacula-sd
3 systemctl enable bacula-fd
Precisamos fazer um pequeno ajuste no Bacula, o mesmo vem configurado por padrão
para utilizar as bibliotecas do PostgreSQL. Precisamos definir as bibliotecas para o
MySQL.

Execute o comando abaixo:


1 alternatives --config libbaccats.so
Selecione a opção 1.

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


2
3 Selection Command
4 -----------------------------------------------
5 1 /usr/lib64/libbaccats-mysql.so
6 2 /usr/lib64/libbaccats-sqlite3.so
7 *+ 3 /usr/lib64/libbaccats-postgresql.so
8
9 Enter to keep the current selection[+], or type selection number: 1

Criando Diretório de Backup e Restore


O Bacula precisa de um diretório de armazenamento de volumes e outro diretório para
restaurações. É possível utilizar diversos diretórios para armazenamento, desde que a
configuração dos volumes e permissões estejam de acordo, a gravação ira funcionar
perfeitamente.

Agora vamos criar os diretórios.

1 mkdir /bacula/
2 mkdir /bacula/backup
3 mkdir /bacula/restore
Ajustando as Permissões nos diretórios, realizando a segurança onde somente o processo
do Bacula e o usuário root tenham acesso.

1 chown -R bacula:bacula /bacula


2 chmod -R 700 /bacula
Configurando o Arquivo Hosts
Vamos utilizar a resolução de nomes nos arquivos de configuração do Bacula, precisamos
ajustar o arquivo hosts de maneira apropriada.

1 vim /etc/hosts

1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4


2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
3
4 # IP LOOPBACK SERVIDOR BACULA BACKUP #
5 127.0.0.1 bacula bacula.tidahora.com.br

Configuração do Bacula Director


O arquivo bacula-dir é o principal arquivo de configuração para a implementação do
Bacula. Vamos acessa-lo em seu diretório e realizar uma cópia de backup.

1 cd /etc/bacula
2 cp -Rfa bacula-dir.conf{,.bkp}
3 rm -rf bacula-dir.conf
Criando o arquivo “bacula-dir.conf” com as configurações já ajustadas: Por padrão o
Bacula vem com as opções de FileSets, Shedules, e clientes no seu arquivo principal, o
bacula-dir.conf, para melhor administração do serviço nós vamos separar essas opções
para um novo arquivo, cada função terá seu arquivo de configuração, mantendo assim o
gerenciamento de forma mais limpa.

1 vim /etc/bacula/bacula-dir.conf
1 ############################################
2 # ARQUIVO DE CONFIGURACAO PADRAO DO BACULA #
3 ############################################
4
5 # DEFININDO O 'DIRECTOR' #
6 Director {
7 Name = bacula-dir
8 DIRport = 9101 # Porta de Comunicacao do Bacula
9 QueryFile = "/etc/bacula/query.sql" # Script de Query
10 WorkingDirectory = "/var/spool/bacula" # Diretório de Trabalho do Bacula
11 PidDirectory = "/var/run" # PID do Bacula
12 Maximum Concurrent Jobs = 1 # Maximo de Backups em Execucao
13 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L" # Senha para ajustar no Bconsole
14 Messages = Daemon # Nivel de mensagens
15 DirAddress = 127.0.0.1
16 }
17
18 # DEFINICOES DE CLIENTES E JOBS #
19 # ARQUIVO ONDE SERA CONFIGURADO E AJUSTADO OS CLIENTES E JOBS DO BACULA #
20 @/etc/bacula/bacula-dir-clients-and-jobs.conf
21
22 # DEFINICOES DE ARQUIVOS PARA BACKUP - (FILE SETS)#
23 # ARQUIVO ONDE SERA CONFIGURADO E AJUSTADO OS 'FILE SETS' DO BACULA #
24 @/etc/bacula/bacula-dir-filesets.conf
25
26 # DEFINICOES DE AGENDAMENTO DOS BACKUPS #
27 @/etc/bacula/bacula-dir-agendamento.conf
28
29 # DEFINICOES DE DISPOSITIVO DE ARMAZENAMENTO #
30 # AQUI DEFINIMOS O STORAGE A SER UTILIZADO PELO BACULA #
31 Storage {
32 Name = File
33 Address = bacula.tidahora.com.br # Pode ser usado Nome ou IP
34 SDPort = 9103 # Porta de Comunicação do Storage
35 Password = "LE_T_-c_55qu1f777Dm52map-s3xpgR4q" # Senha Storage Bacula
36 Device = FileStorage # Device de Storage
37 Media Type = File # Tipo de Midia (Fita, DVD, HD)
38 Maximum Concurrent Jobs = 10 # Num. Maximo de Jobs executados nessa Storage.
39 }
40 # Generic catalog service
41 Catalog {
42 Name = Catalogo # Nome do Catalogo
43 dbname = "bacula"; dbuser = "bacula"; dbpassword = "SENHA" # Configuracoes do MySQL
44 }
45 # Reasonable message delivery -- send most everything to email address
46 # and to the console
47
48 Messages {
49 Name = Standard
50 # ABAIXO E POSSIVEL AJUSTAR COMO O BACULA ENVIARA MENSAGENS AO ADMINISTRADOR #
51 mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
52 operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\"
53 %r"
54 mail = root@localhost = all, !skipped
55 operator = root@localhost = mount
56 console = all, !skipped, !saved
57 append = "/var/log/bacula/bacula.log" = all, !skipped
58 catalog = all
59 }
60
61 # Message delivery for daemon messages (no job).
62 Messages {
63 Name = Daemon
64 mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
65 mail = root@localhost = all, !skipped
66 console = all, !skipped, !saved
67 append = "/var/log/bacula/bacula.log" = all, !skipped
68 }
69
70 # POOL PADRAO DEFINIDO
71 Pool {
72 Name = File # o Job de Backup por padrao aponta para o 'File'
73 Pool Type = Backup # O Tipo do Pool = Backup, Restore, Etc.
74 Recycle = yes # Bacula can automatically recycle Volumes
75 AutoPrune = yes # Prune expired volumes
76 Volume Retention = 1 month # Retencao de Volume = 1 Mes
77 Volume Use Duration = 23 hours # Duracao de um volume aberto
78 Maximum Volume Bytes = 20 Gb # Tamanho maximo de um volume
79 Maximum Volumes = 10 # Volume Bytes X Volumes <= Dispositivo de backup
80 LabelFormat = "volume" # Nome Default do Volume
81 }
82 # Scratch pool definition
83 # Volumes que serao emprestado a alguma Pool temporariamente
84 Pool {
85 Name = Scratch
86 Pool Type = Backup
87 }
88 #
89
90 # Restricted console used by tray-monitor to get the status of the director
91 #
92 #Console {
93 # Name = bacula-mon
94 # Password = "S91uKqybG5NXwiCbzPYMg5Cfp0o7mW4Ze"
95 # CommandACL = status, .status
#}
O Próximo passo é ajustar os arquivos que fazem referências para FileSets,
Agendamentos e Clientes.

Arquivo que contém informações de clientes e jobs do Bacula: – /etc/bacula/bacula-dir-


clients-and-jobs.conf

1 vim /etc/bacula/bacula-dir-clients-and-jobs.conf

1 ###################################################
2 ## ARQUIVO DE CONFIGURACAO PARA CLIENTES E JOBS ##
3 ###################################################
4
5 # JOB PADRAO PARA O BACULA SERVER #
6 JobDefs {
7 Name = "DefaultJobs" # Nome do Job Padrao
8 Type = Backup # Tipo de Job (Backup, Restore, Verificacao)
9 Level = Incremental # Nivel do Job (Full, Incremental, Diferencial)
10 Client = bacula-fd # Nome do Cliente FD
11 FileSet = "Full Set" # File Set Definido para Esse Job
12 Schedule = "WeeklyCycle" # Agendamento Definido para Esse Job
13 Storage = File # Define Storage
14 Messages = Standard # Nivel de mensagens
15 Pool = File # Define a Pool
16 Priority = 10 # Qual o nivel de Prioridade
17 Write Bootstrap = "/var/spool/bacula/%c.bsr" # Arquivo gerado pelo Bacula para armazenar informacoes de
18 backups feitos em seus clientes.
19 # AS OPCOES ABAIXO EVITAM QUE SEJAM DUPLICADO JOBS NO SERVIDOR, CASO TENHA UM JOB
20 DUPLICADO O MESMO E CANCELADO
21 Allow Duplicate Jobs = no # Permite Jobs Duplicados
22 Cancel Lower Level Duplicates = yes # Cancela niveis inferiores duplicados
23 }
24
25 # JOB DE BACKUP PARA OS SERVIDORES WINDOWS SERVER #
26 JobDefs {
27 Name = "DefaultWindows" # Nome do Job Para Servidores Windows
28 Type = Backup # Tipo de Job (Backup, Restore, Verificacao)
29 Level = Incremental # Nivel do Job (Full, Incremental, Diferencial)
30 Client = bacula-fd # Nome do Cliente FD
31 FileSet = "Full Set" # File Set Definido para Esse Job
32 Schedule = "WeeklyCycle" # Agendamento Definido para Esse Job
33 Storage = File # Define Storage
34 Messages = Standard # Nivel de mensagens
35 Pool = File # Define a Pool
36 Priority = 10 # Qual o nivel de Prioridade
37 Write Bootstrap = "/var/spool/bacula/%c.bsr" # Arquivo gerado pelo Bacula para armazenar informacoes de
38 backups feitos em seus clientes.
39 # AS OPCOES ABAIXO EVITAM QUE SEJAM DUPLICADO JOBS NO SERVIDOR, CASO TENHA UM JOB
40 DUPLICADO O MESMO E CANCELADO
41 Allow Duplicate Jobs = no # Permite Jobs Duplicados
42 Cancel Lower Level Duplicates = yes # Cancela niveis inferiores duplicados
43 }
44
45 # JOB DE BACKUP DO CATALOGO #
46 Job {
47 Name = "BackupCatalogo" # Nome do Job Para Backup do Catalogo
48 JobDefs = "DefaultJobs" # JobDefs usado para operacao
49 Level = Full # Nivel do Job (Full, Incremental, Diferencial)
50 FileSet = "Catalogo" # File Set Definido para Esse Job
51 Schedule = "WeeklyCycleAfterBackup" # Agendamento Definido para Esse Job
52 RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl Catalogo" # Acao executada antes da
53 operacao
54 Write Bootstrap = "/var/spool/bacula/%n.bsr" # Arquivo gerado pelo Bacula para armazenar
55 informacoes de backups feitos em seus clientes.
56 Priority = 11 # Executar depois do Backup - ajustar prioridade
57 }
58
59 # JOB DE RESTAURACAO - (RESTORE) - SO E PRECISO ESSE JOBS PARA RESTAURACAO DE BACKUP #
60 Job {
61 Name = "RestoreFiles" # Nome do Job Para Restore
62 Type = Restore # Tipo de Job (Backup, Restore, Verificacao)
63 Client = bacula-fd # Nome do Cliente FD
64 FileSet = "Full Set" # File Set Definido para Esse Job
65 Storage = File # Agendamento Definido para Esse Job
66 Pool = File # Define a Pool
67 Messages = Standard # Nivel de mensagens
68 Where = /bacula/restore # Diretorio onde o bacula ira restaurar os arquivos nos
69 clientes
70 }
71
72 #######################################################################
73 ## AQUI VAMOS DEFINIR OS CLIENTES E JOBS PARA CADA CLIENTE ADICIONADO #
74 #######################################################################
75
76 ## ------------------------------------------------------------------- ##
77 # JOB DE BACKUP PARA O DIRECTOR DO BACULA
78 # HOSTNAME: bacula.tidahora.com.br
79
80 Job {
81 Name = "BackupDirector" # Nome do Job para Backup do Director (Proprio Servidor Bacula)
82 JobDefs = "DefaultJobs" # JObDefs Definido
83 Client = bacula-fd # Cliente fd
84 }
85
Client {
Name = bacula-fd # Cliente fd
Address = bacula.tidahora.com.br # Ajustado no /etc/hosts
Password = "ExgYbEinJWMf7lsWPBcpffZaNMmiGcbgp" # Senha do Director do Bacula
@/etc/bacula/clientes/bacula.tidahora.com.br.client # Arquivo onde contem informacoes sobre o cliente.
}
## -------------------------------------------------------------------- ##
Arquivo onde contém informações de ‘File Sets’ do Bacula: – /etc/bacula/bacula-dir-
filesets.conf

1 vim /etc/bacula/bacula-dir-filesets.conf

1 ###################################################
2 ## ARQUIVO DE CONFIGURACAO PARA CLIENTES E JOBS ##
3 ###################################################
4 # LISTA DOS ARQUIVOS QUE SERAO COPIADOS
5
6 FileSet {
7 Name = "Full Set" # Nome do FileSets
8 # Arquivos que serao incluidos para serem copiados ao backup
9 Include {
10 Options {
11 signature = MD5
12 compression = GZIP
13 verify = pin1
14 onefs = no
15 }
16 File = /etc
17 File = /root
18 File = /var/log
19 File = /var/www
20 File = /home
21 File = /usr/sbin
22 File = /etc/bacula/
23 }
24 # Arquivos que serao ignorados ao backup
25 Exclude {
26 File = /var/lib/bacula
27 File = /proc
28 File = /tmp
29 File = /.journal
30 File = /.fsck
31 }
32 }
33 # LISTA DOS ARQUIVOS QUE SERAO COPIADOS - CATALOGO #
34
35 FileSet {
36 Name = "Catalogo"
37 # Arquivos que serao incluidos para serem copiados ao backup
38 Include {
39 Options {
40 signature = MD5
41 }
42 File = "/var/lib/bacula/bacula.sql"
43 }
44 }
45
46 # LISTA DOS ARQUIVOS QUE SERAO COPIADOS - SISTEMA WINDOWS SERVER #
47
48 FileSet {
49 Name = "WindowsFS"
50 # Arquivos que serao incluidos para serem copiados ao backup
51 Include {
52 # Plugin = "alldrivers"
53 Options {
54 signature = MD5
55 Compression = GZIP1
56 OneFS = no
57 }
58 File = "E:/"
59 }
60 }
Vamos criar o arquivo onde vamos ajustar os agendamentos de backup, esse arquivo
contém informações de horários de rotinas de backups.

1 vim /etc/bacula/bacula-dir-agendamento.conf

1 #################################################################
2 ## ARQUIVO DE CONFIGURACAO DE AGENDAMENTO DE TAREFAS DO BACULA ##
3 #################################################################
4 # DEFINICOES DE AGENDAMENTO DOS BACKUPS #
5
6 # AGENDAMENTO PADRAO DO BACULA - CICLO SEMANAL DE BACKUP #
7 Schedule {
8 Name = "WeeklyCycle" # Ciclo Semanal de Backup
9 Run = Full 1st sun at 23:05 # Backup Full no Primeiro Domingo do Mes as 23:05 hrs
10 Run = Differential 2nd-5th sun at 16:50 # Backup Diferencial de Seg. a Sabado as 23:05 hrs
11 Run = Incremental mon-sat at 10:30 # Backup Incremental de Seg. a Sabado as 23:05 hrs
12 }
13
14 # AGENDAMENTO PARA SERVIDOR LINUX - CICLO SEMANAL DE BACKUP #
15 Schedule {
16 Name = "CicloBackupLinux"
17 Run = Level=Full 1st sun at 23:00
18 Run = Level=Full mon-sat at 10:00
19 }
20
21 # AGENDAMENTO PARA SERVIDOR WINDOWS SERVER - CICLO SEMANAL DE BACKUP #
22 Schedule {
23 Name = "CicloBackupWindows" # Ciclo Semanal de Backup
24 Run = Full 1st sun at 23:00 # Backup Full no Primeiro Domingo do Mes as 23:05 hrs
25 Run = Differential 2nd-5th sun at 14:10 # Backup Diferencial de Seg. a Sabado as 11:40 hrs
26 Run = Full mon-sat at 10:00 # Backup Incremental de Seg. a Sabado as 11:25
27 }
28
29 # DEFINICOES DE AGENDAMENTO DO BACKUP DOS CATALOGOS #
30 # FEITO SEMPRE DEPOIS DOS BACKUPS #
31 Schedule {
32 Name = "WeeklyCycleAfterBackup"
33 Run = Level=Full sun-sat at 09:15
34 }
Vamos agora criar o diretório onde vai ficar armazenados os arquivos com informações
básicas de nossos clientes:

Crie o diretório “clientes”:

1 mkdir /etc/bacula/clientes
Antes de adicionar um cliente ao bacula vamos criar o arquivo de storage de backup.
Criando o arquivo de Storage do backup:

1 cp -Rfa /etc/bacula/bacula-sd.conf{,.bkp}
2 rm -rf /etc/bacula/bacula-sd.conf
3 vim /etc/bacula/bacula-sd.conf

1 ##############################################################
2 # ARQUIVO PADRAO DE CONFIGURACAO DE STORAGE DO BACULA #
3 ##############################################################
4
5 Storage {
6 Name = bacula-sd # Nome do Storage
7 SDPort = 9103 # Porta do Director
8 WorkingDirectory = "/var/spool/bacula" # Diretorio de Trabalho
9 Pid Directory = "/var/run" # Pid do Bacula
10 Maximum Concurrent Jobs = 20 # Maximo de Backups em Execucao
11 SDAddress = bacula.tidahora.com.br # Nome ou IP do Storage do Bacula
12 }
13
14 #
15 # List Directors who are permitted to contact Storage daemon
16 #
17 Director {
18 Name = bacula-dir
19 Password = "LE_T_-c_55qu1f777Dm52map-s3xpgR4q"
20 }
21 #
22 # Restricted Director, used by tray-monitor to get the
23 # status of the storage daemon
24 # Usado pelo tray-monitor do bacula para obter status do servidor
25 Director {
26 Name = bacula-mon
27 Password = "kNuOgEZUq2pqP6hRqPHMHm7UyxCOG1LBf"
28 Monitor = yes
29 }
30
31 # ABAIXO DEFINIMOS O NOME, TIPO, E O DIRETÓRIO DE ARQUIVOS DO BACULA
32
33 Device {
34 Name = FileStorage # Nome do Device
35 Media Type = File # Tipo de Midia (DVD, CD, HD, FITA)
36 Archive Device = /bacula/backup # Diretorio onde serao salvos os volumes de backup
37 LabelMedia = yes; # Midias de Etiquetamento do Bacula
38 Random Access = Yes; #
39 AutomaticMount = yes; # Montar Automaticamente
40 RemovableMedia = no; # Midia Removivel
41 AlwaysOpen = no; # Manter Sempre Aberto
42 }
43
44 #
45 # Send all messages to the Director,
46 # mount messages also are sent to the email address
47 #
48 Messages {
49 Name = Standard
50 director = bacula-dir = all
51 }
Após criado o arquivo vamos criar o diretório de backup e restore ajustado no arquivo
acima:

1 mkdir -p /bacula/backup /bacula/restore


2 chown -R bacula:bacula /bacula
3 chmod -R 700 /bacula
Para que o bacula consiga fazer seu próprio backup, precisamos ajustar o arquivo de
cliente para ele: Crie o arquivo abaixo:
1 cp -Rfa /etc/bacula/bacula-fd.conf{,.bkp}
2 rm -rf /etc/bacula/bacula-fd.conf
3 vim /etc/bacula/bacula-fd.conf

##############################################################
# ARQUIVO DE CONFIGURACAO DO FILE DAEMON DO BACULA #
1 ##############################################################
2
3 #
4 # List Directors who are permitted to contact this File daemon
5 #
6 Director {
7 Name = bacula-dir # Nome do Director
8 Password = "ExgYbEinJWMf7lsWPBcpffZaNMmiGcbgp" # ESTA SENHA ESTA DEFINIDA NO ARQUIVO
9 DE CLIENTE EM /ETC/BACULA/BACULA-DIR-CLIENTS-AND-JOBS.CONF
10 }
11
12 #
13 # Restricted Director, used by tray-monitor to get the
14 # status of the file daemon
15 #
16 Director {
17 Name = bacula-mon
18 Password = "z27BNYXA9dx1SZWk1vp-kSZ8azwz2HMS8" # ESTA SENHA E UTILIZADO PELO BACULA-
19 MONITOR
20 Monitor = yes
21 }
22 #
23 # "Global" File daemon configuration specifications
24 #
25 FileDaemon {
26 Name = bacula-fd # Nome do Bacula-fd
27 FDport = 9102 # Porta de Comunicacao do bacula-fd
28 WorkingDirectory = /var/spool/bacula # Diretorio de trabalho
29 Pid Directory = /var/run # Diretorio de Pid
30 Maximum Concurrent Jobs = 20 # Numero maximo de jobs executados no bacula
31 # FDAddress = 127.0.0.1 # COMENTAR OU REMOVER ESSA LINHA PARA QUE ELE POSSA
32 'OUVIR' CONEXOES EM TODAS AS INTERFACES
33 }
34
35 # Send all messages except skipped files back to Director
36 Messages {
37 Name = Standard
38 director = bacula-dir = all, !skipped, !restored # AS MENSAGEM SAO ENCAMINHADAS PARA O
'BACULA-DIR' DEFINIDO NESSA LINHA
}
Feito isso vamos criar o arquivo de cliente com as informações de catalogos para o nosso
bacula:
1 vim /etc/bacula/clientes/bacula.tidahora.com.br.client

1 ##########################################################
2 ## ARQUIVO PARA CONFIGURACAO DE CLIENTE LINUX NO BACULA ##
3 ##########################################################
4 Catalog = Catalogo # Nome do Catalogo definido
5 File Retention = 30 days # Tempo de Retencao do Backup
6 Job Retention = 6 months # Tempo de Retencao do Job
7 AutoPrune = yes # Prune de Jobs/Arquivos Expirados
Agora que temos os arquivos criados, vamos alterar as permissões deles e do diretório
onde o Bacula irá armazenar os Volumes de backup.

Abaixo, segue lista dos arquivos que criamos:

 bacula-dir.conf ← Arquivo Director do Bacula


 bacula-sd.conf ← Arquivo de Definições de Storage
 bacula-fd.conf ← Arquivo de cliente para o bacula
 bacula-dir-clients-and-jobs.conf ← Informações de Clientes e Jobs
 bacula-dir-filesets.conf ← Informações de FileSets
 bacula-dir-agendamento.conf ← Arquivo de horários de Jobs de
Backups clientes/bacula.tidahora.com.br ← Informações de Catalogo

Diretório onde o Bacula irá armazenar os Volumes de Backup: “/bacula/backup/”

Vamos ajustar as permissões aos mesmos:

1 chown bacula:bacula bacula-dir-clients-and-jobs.conf


2 chown bacula:bacula bacula-dir-filesets.conf
3 chown bacula:bacula bacula-dir-agendamento.conf
4 chown bacula:bacula bacula-dir.conf
5 chown bacula:bacula bacula-fd.conf
6 chown bacula:bacula bacula-sd.conf
7 chown bacula:bacula clientes
8 chown bacula:bacula clientes/*

Iniciando os Serviços do Bacula


1 systemctl start bacula-dir
2 systemctl start bacula-sd
3 systemctl start bacula-fd
Verificando os processos rodando…

1 ps aux |grep bacula

Ajustando o SELinux e o FirewallD


Precisamos definir permissão no SELINUX para que possamos gravar nos diretórios de
Backup e Restore. Execute o comando abaixo para habilitar a permissão de gravação nos
diretórios. O comando abaixo irá restaurar de forma recursiva o contexto do SELinux para
o diretório /bacula e seus subdiretórios.

1 restorecon -R -v /bacula/

1 restorecon reset /bacula context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:bacula_store_t:s0


2 restorecon reset /bacula/backup context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:bacula_store_t:s0
3 restorecon reset /bacula/restore context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:bacula_store_t:s0
Em seguida, vamos ajustar o FirewallD no CentOS 7 para permitir as conexões ao Bacula.

1 firewall-cmd --permanent --zone=public --add-port=9101/tcp


2 firewall-cmd --permanent --zone=public --add-port=9102/tcp
3 firewall-cmd --permanent --zone=public --add-port=9103/tcp
4 firewall-cmd --reload

Ajustando o Bacula Console


Precisamos passar a senha do Bacula Director para arquivo de configuração do Bacula
Console.

Vamos editar o arquivo bconsole.conf.

Pegando a senha.

1 grep -R "Password" /etc/bacula/bacula-dir.conf


2 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L" # Senha para ajustar no Bconsole
3 Password = "LE_T_-c_55qu1f777Dm52map-s3xpgR4q" # Senha Storage Bacula
4 # Password = "S91uKqybG5NXwiCbzPYMg5Cfp0o7mW4Ze"
Abra o arquivo bconsole.conf

1 vim /etc/bacula/bconsole.conf
E insira no arquivo de configuração a senha do director.

1 #
2 # Bacula User Agent (or Console) Configuration File
3 #
4
5 Director {
6 Name = bacula-dir
7 DIRport = 9101
8 address = localhost
9 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
10 }
Reinicie os serviços do Bacula.
1 systemctl restart bacula-dir
2 systemctl restart bacula-sd
3 systemctl restart bacula-fd

Criando os Volumes
Em seguida vamos criar os volumes no bacula.

Abra o bacula console.

1 bconsole
Digite ‘label’ e na linha Enter new Volume name: digite o nome do volume, no meu caso
coloquei “volume-backup”, em seguida selecione o tipo do Pool para File.

1 *label
2 Automatically selected Catalog: Catalogo
3 Using Catalog "Catalogo"
4 Automatically selected Storage: File
5 Enter new Volume name: volume-backup
6 Defined Pools:
7 1: File
8 2: Scratch
9 Select the Pool (1-2): 1
10 Connecting to Storage daemon File at bacula.tidahora.com.br:9103 ...
11 Sending label command for Volume "volume-backup" Slot 0 ...
12 3000 OK label. VolBytes=191 DVD=0 Volume="volume-backup" Device="FileStorage" (/bacula/backup)
13 Catalog record for Volume "volume-backup", Slot 0 successfully created.
14 Requesting to mount FileStorage ...
15 3906 File device ""FileStorage" (/bacula/backup)" is always mounted.

Executando Backup Local


No Bacula Console.
1 bconsole

1 *run
2 A job name must be specified.
3 The defined Job resources are:
4 1: BackupCatalogo
5 2: RestoreFiles
6 3: BackupDirector
7 Select Job resource (1-3): 3
8 Run Backup job
9 JobName: BackupDirector
10 Level: Incremental
11 Client: bacula-fd
12 FileSet: Full Set
13 Pool: File (From Job resource)
14 Storage: File (From Job resource)
15 When: 2015-12-15 10:35:33
16 Priority: 10
17 OK to run? (yes/mod/no): yes
18 Job queued. JobId=2
19 You have messages.
20 *m
21 15-Dec 10:35 bacula-dir JobId 2: No prior Full backup Job record found.
22 15-Dec 10:35 bacula-dir JobId 2: No prior or suitable Full backup found in catalog. Doing FULL backup.
23 *status dir
24 bacula-dir Version: 5.2.13 (19 February 2013) x86_64-redhat-linux-gnu redhat (Core)
25 Daemon started 15-Dec-15 10:32. Jobs: run=0, running=1 mode=0,0
26 Heap: heap=270,336 smbytes=91,641 max_bytes=96,108 bufs=286 max_bufs=287
27
28 Scheduled Jobs:
29 Level Type Pri Scheduled Name Volume
30 ===================================================================================
31 Full Backup 11 16-Dec-15 09:15 BackupCatalogo volume
32 Incremental Backup 10 16-Dec-15 10:30 BackupDirector volume
33 ====
34
35 Running Jobs:
36 Console connected at 15-Dec-15 10:33
37 JobId Level Name Status
38 ======================================================================
39 2 Full BackupDirector.2015-12-15_10.35.36_03 is running
40 ====
41 No Terminated Jobs.
42 ====
43 *
Verificando o Backup…
1 *status dir
2 bacula-dir Version: 5.2.13 (19 February 2013) x86_64-redhat-linux-gnu redhat (Core)
3 Daemon started 15-Dec-15 10:32. Jobs: run=1, running=0 mode=0,0
4 Heap: heap=270,336 smbytes=89,500 max_bytes=99,629 bufs=265 max_bufs=298
5
6 Scheduled Jobs:
7 Level Type Pri Scheduled Name Volume
8 ===================================================================================
9 Full Backup 11 16-Dec-15 09:15 BackupCatalogo volume
10 Incremental Backup 10 16-Dec-15 10:30 BackupDirector volume
11 ====
12
13 Running Jobs:
14 Console connected at 15-Dec-15 10:33
15 No Jobs running.
16 ====
17
18 Terminated Jobs:
19 JobId Level Files Bytes Status Finished Name
20 ====================================================================
21 2 Full 1,643 25.53 M OK 15-Dec-15 10:35 BackupDirector
22
23 ====
Primeiro volume de Backup criado no diretório de backups.

1 [root@centos bacula]# cd backup/


2 [root@centos backup]# ls -la
3 total 32768
4 drwx------. 2 bacula bacula 19 Dez 15 10:33 .
5 drwx------. 4 bacula bacula 33 Dez 15 09:38 ..
6 -rw-r-----. 1 bacula tape 25794527 Dez 15 10:35 volume-backup

Restaurando Backup
Abrindo o bacula console.

1 bconsole
1 [root@centos backup]# bconsole
2 Connecting to Director 127.0.0.1:9101
3 1000 OK: bacula-dir Version: 5.2.13 (19 February 2013)
4 Enter a period to cancel a command.
5 *restore
6 Automatically selected Catalog: Catalogo
7 Using Catalog "Catalogo"
8
9 First you select one or more JobIds that contain files
10 to be restored. You will be presented several methods
11 of specifying the JobIds. Then you will be allowed to
12 select which files from those JobIds are to be restored.
13
14 To select the JobIds, you have the following choices:
15 1: List last 20 Jobs run
16 2: List Jobs where a given File is saved
17 3: Enter list of comma separated JobIds to select
18 4: Enter SQL list command
19 5: Select the most recent backup for a client
20 6: Select backup for a client before a specified time
21 7: Enter a list of files to restore
22 8: Enter a list of files to restore before a specified time
23 9: Find the JobIds of the most recent backup for a client
24 10: Find the JobIds for a backup for a client before a specified time
25 11: Enter a list of directories to restore for found JobIds
26 12: Select full restore to a specified Job date
27 13: Cancel
28 Select item: (1-13): 5
29 Automatically selected Client: bacula-fd
30 Automatically selected FileSet: Full Set
31 +-------+-------+----------+------------+---------------------+------------+
32 | JobId | Level | JobFiles | JobBytes | StartTime | VolumeName |
33 +-------+-------+----------+------------+---------------------+------------+
34 | 2 | F | 1,643 | 25,531,312 | 2015-12-15 10:35:39 | volume-backup |
35 +-------+-------+----------+------------+---------------------+------------+
36 You have selected the following JobId: 2
37
38 Building directory tree for JobId(s) 2 ... +++++++++++++++++++++++++++++++++++++++++++++
39 1,495 files inserted into the tree.
40
41 You are now entering file selection mode where you add (mark) and
42 remove (unmark) files to be restored. No files are initially added, unless
43 you used the "all" keyword on the command line.
44 Enter "done" to leave this mode.
45
46 cwd is: /
47 $ ls
48 etc/
49 home
50 root/
51 usr/
52 var/
53 $ mark etc home root
54 1,159 files marked.
55 $ done
56 Bootstrap records written to /var/spool/bacula/bacula-dir.restore.1.bsr
57
58 The job will require the following
59 Volume(s) Storage(s) SD Device(s)
60 ===========================================================================
61
62 volume File FileStorage
63
64 Volumes marked with "*" are online.
65
66
67 1,159 files selected to be restored.
68
69 Run Restore job
70 JobName: RestoreFiles
71 Bootstrap: /var/spool/bacula/bacula-dir.restore.1.bsr
72 Where: /bacula/restore
73 Replace: always
74 FileSet: Full Set
75 Backup Client: bacula-fd
76 Restore Client: bacula-fd
77 Storage: File
78 When: 2015-12-15 10:42:14
79 Catalog: Catalogo
80 Priority: 10
81 Plugin Options: *None*
82 OK to run? (yes/mod/no): yes
83 Job queued. JobId=3
84 You have messages.
Verificando as Mensagens…

*m
1 15-Dec 10:42 bacula-dir JobId 3: Start Restore Job RestoreFiles.2015-12-15_10.42.17_05
2 15-Dec 10:42 bacula-dir JobId 3: Using Device "FileStorage" to read.
3 15-Dec 10:42 bacula-sd JobId 3: Ready to read from volume "volume-backup" on device "FileStorage"
4 (/bacula/backup).
5 15-Dec 10:42 bacula-sd JobId 3: Forward spacing Volume "volume-backup" to file:block 0:191.
6 15-Dec 10:42 bacula-sd JobId 3: End of Volume at file 0 on device "FileStorage" (/bacula/backup), Volume "volume-
7 backup"
8 15-Dec 10:42 bacula-sd JobId 3: End of all volumes.
9 15-Dec 10:42 bacula-dir JobId 3: Bacula bacula-dir 5.2.13 (19Jan13):
10 Build OS: x86_64-redhat-linux-gnu redhat (Core)
11 JobId: 3
12 Job: RestoreFiles.2015-12-15_10.42.17_05
13 Restore Client: bacula-fd
14 Start time: 15-Dec-2015 10:42:19
15 End time: 15-Dec-2015 10:42:20
16 Files Expected: 1,159
17 Files Restored: 1,159
18 Bytes Restored: 20,740,415
19 Rate: 20740.4 KB/s
20 FD Errors: 0
21 FD termination status: OK
22 SD termination status: OK
23 Termination: Restore OK
24
25 15-Dec 10:42 bacula-dir JobId 3: Begin pruning Jobs older than 6 months .
26 15-Dec 10:42 bacula-dir JobId 3: No Jobs found to prune.
27 15-Dec 10:42 bacula-dir JobId 3: Begin pruning Files.
28 15-Dec 10:42 bacula-dir JobId 3: No Files found to prune.
15-Dec 10:42 bacula-dir JobId 3: End auto prune.
Obtendo os arquivos de Restores.
Abra o diretório de restauração.

1 [root@centos backup]# cd /bacula/restore/


2 [root@centos restore]# ls -l
3 total 12
4 drwxr-xr-x. 77 root root 4096 Dez 15 10:42 etc
5 drwxr-xr-x. 2 root root 6 Ago 12 11:22 home
6 dr-xr-x---. 2 root root 4096 Dez 15 10:31 root
Pronto! restore realizado com sucesso.

Nao irei abordar aqui a instalação de clientes no bacula, vou deixar isso para um outro
tutorial.

Dúvidas, comentário e sugestões postem nos comentários…

Valeu! e até a próxima!

Você também pode gostar