Entendendo a configuração do Bacula Backup

bacula

O Bacula Backup é um software que permite um administrador de sistema administrar backup, restauração e verificação dos dados de computadores em uma rede de sistemas mistos, isso se mostra uma característica muito importante pois em sua grande maioria as redes são compostas por sistemas mistos.

Por ser tão flexível o Bacula é considerado um framework de backup, podendo ser implementado nas mais diferentes estruturas corporativas. Certas coisas você só encontra no Bácula como geração em formato aberto que pode ser lido por diversos programas como tar, dump entre outros você ficará livre para usar o que te mais convier. Você poderá armazenar seu catálogo em um banco de dados de padrão SQL como o PostgreSQL ou o MySQL. É possível usar algoritmos de compressão como GZIP ou ainda LZO que são tecnologias abertas e de custo zero.

Esqueça os expensivos custos com licença de softwares proprietários, Bácula está licenciado sob a GPL e pode ser adquirido gratuitamente e customizado para suas necessidades.

Nesse guia, vou mostrar os arquivos de configuração do Bacula Backup. No ambiente em que foi instalado, o backup é feito por uma tape library LTO 7.

bacula
Bacula Backup

Configuração do Bacula

Continuando o post sobre Bacula iniciado anteriormente, quando estava fazendo a instalação do meu Bacula, encontrei um artigo muito legal no TI da Hora que divide o arquivo de configuração bacula-dir em mais arquivos, de forma que as informações ficam melhor organizadas e fáceis de achar. Vamos falar sobre os arquivos:

  • bacula-dir.conf: É o principal arquivo de configuração do Bacula. Por padrão, ele tem informações sobre o servidor do Bacula (Director), Jobs, Clients, Schedules, Storages, Pools, Catalog e Messages, devido a grande quantidade de informações quando o Bacula é utilizado para backup de muitos servidores e jobs, sugiro a separação das funções do arquivo bacula-dir para melhor organização e facilidade pra visualizar as informações.
    Utilizando o formato de arquivos separados, o bacula-dir.conf vai ter as informações do “Storage”, que é onde os backups serão salvos (pode ser disco, fita), informações sobre os “Pools”, a informações sobre o “Catalog” (banco de dados onde são salvas as informações do Bacula), as configurações de “Messages” (notificações do Bacula) e o “Director”, a configuração do próprio Bacula.
  • bacula-dir-jobs.conf: Arquivo que contém somente os jobs do bacula. Na instalação são criados o job de backup do Bacula e o job de restore (não é necessário mais de um job para restore).
  • bacula-dir-clients.conf: Arquivo que contém a informação dos clientes de backup.
  • bacula-dir-filesets.conf: Arquivo que contém as informações dos documentos a serem salvos nos jobs do Bacula, é possível, por exemplo, excluir tipos de arquivo do backup ou fazer backup de apenas uma pasta.
  • bacula-dir-agendamento.conf: Arquivo que contém informações sobre os agendamentos de backup, você pode definir, por exemplo, o backup full semanal ou o incremental diário.
  • bacula-sd.conf: Contém as configurações dos devices de cada storage configurado no bacula-dir.conf. Aqui vão as principais configurações para utilização de robôs de backup.
  • bacula-fd.conf: O arquivo bacula-fd.conf é o que contém as informações do cliente para conexão no Bacula, como o servidor tem o job para backup dele mesmo, o arquivo bacula-fd.conf é necessário para fazer a conexão.

Exemplos de arquivos de configurações

bacula-dir.conf

############################################
# ARQUIVO DE CONFIGURACAO PADRAO DO BACULA #
############################################

# DEFININDO O 'DIRECTOR' #
Director { 
 Name = bacula-dir
 DIRport = 9101 # Porta de Comunicacao do Bacula
 QueryFile = "/etc/bacula/query.sql" # Script de Query
 WorkingDirectory = "/var/spool/bacula" # Diretório de Trabalho do Bacula
 PidDirectory = "/var/run" # PID do Bacula
 Maximum Concurrent Jobs = 1 # Maximo de Backups em Execucao
 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L" # Senha para ajustar no Bconsole
 Messages = Daemon # Nivel de mensagens
 DirAddress = 127.0.0.1
}

# DEFINICOES DE JOBS #
# ARQUIVO ONDE SERA CONFIGURADO E AJUSTADO OS CLIENTES E JOBS DO BACULA #
@/etc/bacula/bacula-dir-jobs.conf

# DEFINICOES DE CLIENTES
@/etc/bacula/bacula-dir-clients.conf

# DEFINICOES DE ARQUIVOS PARA BACKUP - (FILE SETS)#
# ARQUIVO ONDE SERA CONFIGURADO E AJUSTADO OS 'FILE SETS' DO BACULA #
@/etc/bacula/bacula-dir-filesets.conf

# DEFINICOES DE AGENDAMENTO DOS BACKUPS #
@/etc/bacula/bacula-dir-agendamento.conf

# DEFINICOES DE DISPOSITIVO DE ARMAZENAMENTO #
# AQUI DEFINIMOS O STORAGE A SER UTILIZADO PELO BACULA #
Storage {
 Name = File
 Address = bacula.tidahora.com.br # Pode ser usado Nome ou IP
 SDPort = 9103 # Porta de Comunicação do Storage
 Password = "LE_T_-c_55qu1f777Dm52map-s3xpgR4q" # Senha Storage Bacula
 Device = FileStorage # Device de Storage
 Media Type = File # Tipo de Midia (Fita, DVD, HD)
 Maximum Concurrent Jobs = 10 # Num. Maximo de Jobs executados nessa Storage.
}
# Generic catalog service
Catalog {
 Name = Catalogo # Nome do Catalogo
 dbname = "bacula"; dbuser = "bacula"; dbpassword = "SENHA" # Configuracoes do MySQL
}
# Reasonable message delivery -- send most everything to email address
# and to the console

Messages {
 Name = Standard
# ABAIXO E POSSIVEL AJUSTAR COMO O BACULA ENVIARA MENSAGENS AO ADMINISTRADOR #
 mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
 operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
 mail = [email protected] = all, !skipped
 operator = [email protected] = mount
 console = all, !skipped, !saved
 append = "/var/log/bacula/bacula.log" = all, !skipped
 catalog = all
}

# Message delivery for daemon messages (no job).
Messages {
 Name = Daemon
 mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
 mail = [email protected] = all, !skipped
 console = all, !skipped, !saved
 append = "/var/log/bacula/bacula.log" = all, !skipped
}

# POOL PADRAO DEFINIDO
Pool {
 Name = File # o Job de Backup por padrao aponta para o 'File'
 Pool Type = Backup # O Tipo do Pool = Backup, Restore, Etc.
 Recycle = yes # Bacula can automatically recycle Volumes
 AutoPrune = yes # Prune expired volumes
 Volume Retention = 1 month # Retencao de Volume = 1 Mes
 Volume Use Duration = 23 hours # Duracao de um volume aberto
 Maximum Volume Bytes = 20 Gb # Tamanho maximo de um volume
 Maximum Volumes = 10 # Volume Bytes X Volumes <= Dispositivo de backup
 LabelFormat = "volume" # Nome Default do Volume
}
# Scratch pool definition
# Volumes que serao emprestado a alguma Pool temporariamente
Pool {
 Name = Scratch
 Pool Type = Backup
}
#

# Restricted console used by tray-monitor to get the status of the director
#
#Console {
# Name = bacula-mon
# Password = "S91uKqybG5NXwiCbzPYMg5Cfp0o7mW4Ze"
# CommandACL = status, .status
#}

bacula-dir-jobs.conf ****

###################################################
## ARQUIVO DE CONFIGURACAO PARA CLIENTES E JOBS  ##
###################################################
 
# JOB PADRAO PARA O BACULA SERVER #
JobDefs {
        Name = "DefaultJobs"                            # Nome do Job Padrao
        Type = Backup                                   # Tipo de Job (Backup, Restore, Verificacao)
        Level = Incremental                             # Nivel do Job (Full, Incremental, Diferencial)
        Client = bacula-fd                              # Nome do Cliente FD
        FileSet = "Full Set"                            # File Set Definido para Esse Job
        Schedule = "WeeklyCycle"                        # Agendamento Definido para Esse Job
        Storage = File                                  # Define Storage
        Messages = Standard                             # Nivel de mensagens
        Pool = File                                     # Define a Pool   
        Priority = 10                                   # Qual o nivel de Prioridade
        Write Bootstrap = "/var/spool/bacula/%c.bsr"      # Arquivo gerado pelo Bacula para armazenar informacoes de backups feitos em seus clientes.
# AS OPCOES ABAIXO EVITAM QUE SEJAM DUPLICADO JOBS NO SERVIDOR, CASO TENHA UM JOB DUPLICADO O MESMO E CANCELADO
        Allow Duplicate Jobs = no                       # Permite Jobs Duplicados
        Cancel Lower Level Duplicates = yes             # Cancela niveis inferiores duplicados 
}
 
# JOB DE BACKUP PARA OS SERVIDORES WINDOWS SERVER #
JobDefs {
        Name = "DefaultWindows"                         # Nome do Job Para Servidores Windows
        Type = Backup                                   # Tipo de Job (Backup, Restore, Verificacao)
        Level = Incremental                             # Nivel do Job (Full, Incremental, Diferencial)
        Client = bacula-fd                              # Nome do Cliente FD
        FileSet = "Full Set"                            # File Set Definido para Esse Job
        Schedule = "WeeklyCycle"                        # Agendamento Definido para Esse Job
        Storage = File                                  # Define Storage
        Messages = Standard                             # Nivel de mensagens
        Pool = File                                     # Define a Pool
        Priority = 10                                   # Qual o nivel de Prioridade
        Write Bootstrap = "/var/spool/bacula/%c.bsr"      # Arquivo gerado pelo Bacula para armazenar informacoes de backups feitos em seus clientes.
# AS OPCOES ABAIXO EVITAM QUE SEJAM DUPLICADO JOBS NO SERVIDOR, CASO TENHA UM JOB DUPLICADO O MESMO E CANCELADO
        Allow Duplicate Jobs = no                       # Permite Jobs Duplicados
        Cancel Lower Level Duplicates = yes             # Cancela niveis inferiores duplicados
}
 
# JOB DE BACKUP DO CATALOGO #
Job {
        Name = "BackupCatalogo"                                                    # Nome do Job Para Backup do Catalogo
        JobDefs = "DefaultJobs"                                                    # JobDefs usado para operacao
        Level = Full                                                               # Nivel do Job (Full, Incremental, Diferencial)
        FileSet = "Catalogo"                                                       # File Set Definido para Esse Job
        Schedule = "WeeklyCycleAfterBackup"                                        # Agendamento Definido para Esse Job
        RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl Catalogo"       # Acao executada antes da operacao
        Write Bootstrap = "/var/spool/bacula/%n.bsr"                               # Arquivo gerado pelo Bacula para armazenar informacoes de backups feitos em seus clientes.
        Priority = 11                                                              # Executar depois do Backup - ajustar prioridade                   
}
 
# JOB DE RESTAURACAO - (RESTORE) - SO E PRECISO ESSE JOBS PARA RESTAURACAO DE BACKUP #
Job {
        Name = "RestoreFiles"                                                 # Nome do Job Para Restore
        Type = Restore                                                        # Tipo de Job (Backup, Restore, Verificacao)
        Client = bacula-fd                                                    # Nome do Cliente FD
        FileSet = "Full Set"                                                  # File Set Definido para Esse Job
        Storage = File                                                        # Agendamento Definido para Esse Job
        Pool = File                                                           # Define a Pool
        Messages = Standard                                                   # Nivel de mensagens
        Where = /bacula/restore                                               # Diretorio onde o bacula ira restaurar os arquivos nos clientes
}
 
#######################################################################
## AQUI VAMOS DEFINIR OS CLIENTES E JOBS PARA CADA CLIENTE ADICIONADO #
#######################################################################
 
## ------------------------------------------------------------------- ##
# JOB DE BACKUP PARA O DIRECTOR DO BACULA
# HOSTNAME: bacula.tidahora.com.br
 
Job {
        Name = "BackupDirector"                           # Nome do Job para Backup do Director (Proprio Servidor Bacula)
        JobDefs = "DefaultJobs"                           # JObDefs Definido
        Client = bacula-fd                                # Cliente fd
}
 
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.
}
## -------------------------------------------------------------------- ##

bacula-dir-clients.conf ****

###################################################
## ARQUIVO DE CONFIGURACAO PARA CLIENTES         ##
###################################################

 
## ------------------------------------------------------------------- ##
# JOB DE BACKUP PARA O DIRECTOR DO BACULA
# HOSTNAME: bacula.tidahora.com.br
 
Job {
        Name = "BackupDirector"                           # Nome do Job para Backup do Director (Proprio Servidor Bacula)
        JobDefs = "DefaultJobs"                           # JObDefs Definido
        Client = bacula-fd                                # Cliente fd
}
 
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.
}
## -------------------------------------------------------------------- ##

bacula-dir-filesets.conf

###################################################
## ARQUIVO DE CONFIGURACAO PARA CLIENTES E JOBS  ##
###################################################
# LISTA DOS ARQUIVOS QUE SERAO COPIADOS 

FileSet {
        Name = "Full Set"                                       # Nome do FileSets
# Arquivos que serao incluidos para serem copiados ao backup
        Include {                                          
                Options {
                        signature = MD5
                        compression = GZIP
                        verify = pin1
                        onefs = no
                }
                File = /etc
                File = /root
                File = /var/log
                File = /var/www
                File = /home
                File = /usr/sbin
                File = /etc/bacula/
                }
# Arquivos que serao ignorados ao backup
        Exclude {
                File = /var/lib/bacula
                File = /proc
                File = /tmp
                File = /.journal
                File = /.fsck
                }
}
# LISTA DOS ARQUIVOS QUE SERAO COPIADOS - CATALOGO #

FileSet {
        Name = "Catalogo"
# Arquivos que serao incluidos para serem copiados ao backup
        Include {
                Options {
                        signature = MD5
                }
                File = "/var/lib/bacula/bacula.sql"
                }
}

# LISTA DOS ARQUIVOS QUE SERAO COPIADOS - SISTEMA WINDOWS SERVER #

FileSet {
        Name = "WindowsFS"
# Arquivos que serao incluidos para serem copiados ao backup
        Include {
#               Plugin = "alldrivers"
                        Options {
                                signature = MD5
                                Compression = GZIP1
                                OneFS = no
                                }
                        File = "E:/"
                }
}

bacula-dir-agendamento.conf

#################################################################
## ARQUIVO DE CONFIGURACAO DE AGENDAMENTO DE TAREFAS DO BACULA ##
#################################################################
# DEFINICOES DE AGENDAMENTO DOS BACKUPS #

# AGENDAMENTO PADRAO DO BACULA - CICLO SEMANAL DE BACKUP #
Schedule {
  Name = "WeeklyCycle"                          # Ciclo Semanal de Backup
  Run = Full 1st sun at 23:05                   # Backup Full no Primeiro Domingo do Mes as 23:05 hrs
  Run = Differential 2nd-5th sun at 16:50       # Backup Diferencial de Seg. a Sabado as 23:05 hrs
  Run = Incremental mon-sat at 10:30            # Backup Incremental de Seg. a Sabado as 23:05 hrs
}

# AGENDAMENTO PARA SERVIDOR LINUX - CICLO SEMANAL DE BACKUP #
Schedule {
  Name = "CicloBackupLinux"
  Run = Level=Full 1st sun at 23:00
  Run = Level=Full mon-sat at 10:00
}

# AGENDAMENTO PARA SERVIDOR WINDOWS SERVER - CICLO SEMANAL DE BACKUP #
Schedule {
  Name = "CicloBackupWindows"                          # Ciclo Semanal de Backup
  Run = Full 1st sun at 23:00                          # Backup Full no Primeiro Domingo do Mes as 23:05 hrs
  Run = Differential 2nd-5th sun at 14:10              # Backup Diferencial de Seg. a Sabado as 11:40 hrs
  Run = Full mon-sat at 10:00                          # Backup Incremental de Seg. a Sabado as 11:25
}

# DEFINICOES DE AGENDAMENTO DO BACKUP DOS CATALOGOS #
#        FEITO SEMPRE DEPOIS DOS BACKUPS            #
Schedule {
  Name = "WeeklyCycleAfterBackup"
  Run = Level=Full sun-sat at 09:15
}

bacula-sd.conf

##############################################################
# ARQUIVO PADRAO DE CONFIGURACAO DE STORAGE DO BACULA	     #
##############################################################

Storage {                             
  Name = bacula-sd                                # Nome do Storage
  SDPort = 9103                                   # Porta do Director    
  WorkingDirectory = "/var/spool/bacula"          # Diretorio de Trabalho
  Pid Directory = "/var/run"                      # Pid do Bacula
  Maximum Concurrent Jobs = 20                    # Maximo de Backups em Execucao
  SDAddress = bacula.tidahora.com.br              # Nome ou IP do Storage do Bacula
}

#
# List Directors who are permitted to contact Storage daemon
#
Director {
  Name = bacula-dir
  Password = "LE_T_-c_55qu1f777Dm52map-s3xpgR4q"
}
#
# Restricted Director, used by tray-monitor to get the
#   status of the storage daemon
# Usado pelo tray-monitor do bacula para obter status do servidor
Director {
  Name = bacula-mon
  Password = "kNuOgEZUq2pqP6hRqPHMHm7UyxCOG1LBf"
  Monitor = yes
}

# ABAIXO DEFINIMOS O NOME, TIPO, E O DIRETÓRIO DE ARQUIVOS DO BACULA

Device {
  Name = FileStorage                      # Nome do Device
  Media Type = File                       # Tipo de Midia (DVD, CD, HD, FITA)
  Archive Device = /bacula/backup         # Diretorio onde serao salvos os volumes de backup
  LabelMedia = yes;                       # Midias de Etiquetamento do Bacula
  Random Access = Yes;                    # 
  AutomaticMount = yes;                   # Montar Automaticamente
  RemovableMedia = no;                    # Midia Removivel
  AlwaysOpen = no;                        # Manter Sempre Aberto
}

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

bacula-fd.conf

##############################################################
# ARQUIVO DE CONFIGURACAO DO FILE DAEMON DO BACULA           #
##############################################################

#
# List Directors who are permitted to contact this File daemon
#
Director {
  Name = bacula-dir                                  # Nome do Director
  Password = "ExgYbEinJWMf7lsWPBcpffZaNMmiGcbgp"     # ESTA SENHA ESTA DEFINIDA NO ARQUIVO DE CLIENTE EM /ETC/BACULA/BACULA-DIR-CLIENTS-AND-JOBS.CONF
}

#
# Restricted Director, used by tray-monitor to get the
#   status of the file daemon
#
Director {
  Name = bacula-mon
  Password = "z27BNYXA9dx1SZWk1vp-kSZ8azwz2HMS8"    # ESTA SENHA E UTILIZADO PELO BACULA-MONITOR
  Monitor = yes
}
#
# "Global" File daemon configuration specifications
#
FileDaemon {                          
  Name = bacula-fd                                  # Nome do Bacula-fd
  FDport = 9102                                     # Porta de Comunicacao do bacula-fd
  WorkingDirectory = /var/spool/bacula              # Diretorio de trabalho
  Pid Directory = /var/run                          # Diretorio de Pid 
  Maximum Concurrent Jobs = 20                      # Numero maximo de jobs executados no bacula
#  FDAddress = 127.0.0.1	                    # COMENTAR OU REMOVER ESSA LINHA PARA QUE ELE POSSA 'OUVIR' CONEXOES EM TODAS AS INTERFACES
}

# Send all messages except skipped files back to Director
Messages {
  Name = Standard
  director = bacula-dir = all, !skipped, !restored        # AS MENSAGEM SAO ENCAMINHADAS PARA O 'BACULA-DIR' DEFINIDO NESSA LINHA
}

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.