>_Backup com Bacula – bacula-dir.conf – 1.7

Entendendo um pouco da estrutura de backup do Bacula.

logoVisão geral do Bacula-dir.conf.

Todos os arquivos de configuração do Bacula, tem um padrão em quase todos os parâmetros. Vejamos abaixo alguns desses parâmetros mais importantes.

O Director (bacula-dir.conf) é a parte mais complexa do sistema. Nele é possível configurar quase todas as opções do Bacula, como job, agendamentos, pools, fileset, definição do tipo de armazenamento, etc. Enfim, é onde se configura os clientes e os arquivos que irão fazer parte da configuração do Bacula.

Director {                            
  Name = bacula-dir
  DIRport = 9101                
  QueryFile = "/usr/libexec/bacula/query.sql"
  WorkingDirectory = "/var/spool/bacula"
  PidDirectory = "/var/run"
  Maximum Concurrent Jobs = 1
  Password = "centos"         
  Messages = Daemon
}

Name = bacula-dir – Apenas um sufixo de Nome. Se refere ao Director, sua autenticação é feita pela senha e pelo Nome do Director. Caso altere esta variável, terá que altera em todos os arquivos de configuração também.

WoekingDirectory – Diretório de trabalho do Bacula.

Maximum Concurrent Jobs – Pode ser encontrado no director, storage e no cliente. Nesta opção é possível delegar a quantidade de jobs que poderão rodar simultaneamente.

Password = Senha da console.

Messages = Local onde será armazenado as mensagem. Podendo ser por email, log e etc.

JobDefs {
  Name = "DefaultJob"
  Type = Backup
  Level = Incremental
  Client = bacula-fd
  FileSet = "Full Set"
  Schedule = "WeeklyCycle"
  Storage = File
  Messages = Standard
  Pool = File
  Priority = 10
  Write Bootstrap = "/var/spool/bacula/%c.bsr"
}

JobDefs – Classe de job padrão, podendo ser utilizado por diversos job’s.

Name – Nome do JobDefs.

Type – Tipo padrão (Backup – Restore – Cópia).

Level – Incremental ( Pré configuração ).

Client – Cliente.

Schedule – Agendamento.

Storage – Tipo de armazenamento Disco | Fita.

Messages – Mensagens.

Pool – ( Método de gravação) – Padrão.

Priority – Prioridade ( 0 é a maior prioridade 100 é a menor ).

Write Bootstrap – Arquivo temporário que o Bacula cria.

Job – É um trabalho de backup especifico para um cliente.
Observação: Cada parâmetro especificado em um Job, prevalecerá sobre o mesmo parâmetro especificado no JobDfes.

Exemplo:

Job {
  Name = "BackupClient1"
  JobDefs = "DefaultJob"
  FileSet = "Bacula_etc_var_opt"
}

O FileSet especificado no job acima prevalecerá sobre o FileSet do JobDfes.

Job
Name = “BackupClient1” (Nome Fantasia do job no bacula-dir).
JobDefs = “Defaultjob”

Job {
  Name = "BackupCatalog"
  JobDefs = "DefaultJob"
  Level = Full
  FileSet="Catalog"
  Schedule = "WeeklyCycleAfterBackup"
  # This creates an ASCII copy of the catalog
  # Arguments to make_catalog_backup.pl are:
  #  make_catalog_backup.pl 
  RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl MyCatalog"
  # This deletes the copy of the catalog
  RunAfterJob  = "/usr/libexec/bacula/delete_catalog_backup"
  Write Bootstrap = "/var/spool/bacula/%n.bsr"
  Priority = 11                   
}

Job de catálogo do Bacula.

# Backup the catalog database (after the nightly save)
Job {
  Name = "BackupCatalog"
  JobDefs = "DefaultJob"
  Level = Full
  FileSet="Catalog"
  Schedule = "WeeklyCycleAfterBackup"
  # This creates an ASCII copy of the catalog
  # Arguments to make_catalog_backup.pl are:
  #  make_catalog_backup.pl 
  RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl MyCatalog"
  # This deletes the copy of the catalog
  RunAfterJob  = "/usr/libexec/bacula/delete_catalog_backup"
  Write Bootstrap = "/var/spool/bacula/%n.bsr"
  Priority = 11                   
}

Parâmetros extremamente importantes:

RunBeforeJob = “/usr/libexec/bacula/make_catalog_backup.pl MyCatalag”
Tem como função chamar um script antes do backup. Neste caso, será executado um Dump do banco de dados.

RunAfterJob = “/usr/libexec/bacula/delete_catalog_backup”
Tem como função chamar um script após o backup. Neste caso, este script irá apagar o Dump após o job de backup.

ClientRunBeforeJob
Tem como função chamar o script no cliente antes de iniciar o job de backup.

Observações:
O Job de Restore é genérico, por existir o comando Restore.
O diretório padrão do job de restauração é o: where = /tmp/bacula-restores

Job {
  Name = "RestoreFiles"
  Type = Restore
  Client=bacula-fd
  FileSet="Full Set"
  Storage = File
  Pool = Default
  Messages = Standard
  Where = /tmp/bacula-restores
}
Automatically selected Client: bacula-fd
Run Restore job
JobName:         RestoreFiles
Bootstrap:       /var/spool/bacula/bacula-dir.restore.2.bsr
Where:           /tmp/bacula-restores
Replace:         always
FileSet:         Full Set
Backup Client:   bacula-fd
Restore Client:  bacula-fd
Storage:         File
When:            2015-04-17 10:09:03
Catalog:         MyCatalog
Priority:        10
Plugin Options:  *None*
OK to run? (yes/mod/no): mod
Parameters to modify:
     1: Level
     2: Storage
     3: Job
     4: FileSet
     5: Restore Client
     6: When
     7: Priority
     8: Bootstrap
     9: Where
    10: File Relocation
    11: Replace
    12: JobId
    13: Plugin Options
Select parameter to modify (1-13): 9
Please enter path prefix for restore (/ for none): /backup/
Run Restore job
JobName:         RestoreFiles
Bootstrap:       /var/spool/bacula/bacula-dir.restore.2.bsr
Where:           /backup/
Replace:         always
FileSet:         Full Set
Backup Client:   bacula-fd
Restore Client:  bacula-fd
Storage:         File
When:            2015-04-17 10:09:03
Catalog:         MyCatalog
Priority:        10
Plugin Options:  *None*
OK to run? (yes/mod/no): yes
Job queued. JobId=21
You have messages.

FileSet
Inclui e excluir diretório/arquivos para serem backupeados.
A exclusão só terá sentido se existir parte do caminho na de inclusão do backup (diretório/arquivo).

	
# List of files to be backed up
FileSet {
  Name = "Full Set"
  Include {
    Options {
      signature = MD5
    }
    File = /usr/sbin
  }

  Exclude {
    File = /var/spool/bacula
    File = /tmp
    File = /proc
    File = /tmp
    File = /.journal
    File = /.fsck
  }
}
# List of files to be backed up
FileSet {
  Name = "Bacula_etc_var_opt"
  Include {
    Options {
      signature = MD5
    }
    File = /etc
    File = /var
    File = /opt
  }

  Exclude {
    File = /var/spool/bacula
    File = /.journal
    File = /.fsck
  }
}

Reiniciando o bacula-dir para aplicar as alterações.

# /etc/init.d/bacula-dir.conf restart

Gerando um novo backup, porém alterando o FileSet antes de executar o job de backup.

utomatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
A job name must be specified.
The defined Job resources are:
     1: BackupClient1
     2: BackupCatalog
     3: RestoreFiles
Select Job resource (1-3): 1
Run Backup job
JobName:  BackupClient1
Level:    Incremental
Client:   bacula-fd
FileSet:  Full Set
Pool:     File (From Job resource)
Storage:  File (From Job resource)
When:     2015-04-17 10:57:52
Priority: 10
OK to run? (yes/mod/no): mod
Parameters to modify:
     1: Level
     2: Storage
     3: Job
     4: FileSet
     5: Client
     6: When
     7: Priority
     8: Pool
     9: Plugin Options
Select parameter to modify (1-9): 4
The defined FileSet resources are:
     1: Full Set
     2: Bacula_etc_var_opt
     3: Catalog
Select FileSet resource (1-3): 2
Run Backup job
JobName:  BackupClient1
Level:    Incremental
Client:   bacula-fd
FileSet:  Bacula_etc_var_opt
Pool:     File (From Job resource)
Storage:  File (From Job resource)
When:     2015-04-17 10:57:52
Priority: 10
OK to run? (yes/mod/no): 

Incluindo o FileSet Bacula_etc_var_opt como default no job de backup BackupClient1.

# Define the main nightly save backup job
#   By default, this job will back up to disk in /tmp
Job {
  Name = "BackupClient1"
  JobDefs = "DefaultJob"
  FileSet = "Bacula_etc_var_opt"
}

Reiniciando o serviço novamente.

# /etc/init.d/bacula-dir.conf restart

Realizando um outro backup, dessa vez com o FileSet Bacula_etc_var_opt como default.

# bconsole 
Connecting to Director localhost:9101
1000 OK: bacula-dir Version: 5.0.0 (26 January 2010)
Enter a period to cancel a command.
*run
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
A job name must be specified.
The defined Job resources are:
     1: BackupClient1
     2: BackupCatalog
     3: RestoreFiles
Select Job resource (1-3): 1
Run Backup job
JobName:  BackupClient1
Level:    Incremental
Client:   bacula-fd
FileSet:  Bacula_etc_var_opt
Pool:     File (From Job resource)
Storage:  File (From Job resource)
When:     2015-04-17 11:00:36
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=23

Schedule
O “schedule” ou agendamento, também é configurado no bacula-dir.conf. Você deve associar um “Job” criado neste arquivo a um agendamento. Por padrão o Bacula  já vem configurado com dois tipos de agendamentos.
– Uma para o jobs de backup do servidor do bacula – (WeeklyCycle)
– Uma para o jobs de backup – (WeekyCycleAfterBackup)

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
}
Name = "WeeklyCycle"
# Será feito um backup completo da segunda-feira até quinta-feira às 20:00hs.
Run = Full 	monday-thursday	at	20:00
# Do segundo ao quinto domingo o backup será feito às 23:05hs.
Run = Differenctial	2nd-5t sun at 	23:05

Outros exemplos:

Será executado um backup incremental usando a Pool diária entre segunda-feira e quinta-feira às 20:00hs.

	
Run = Incremental	Pool=Diaria	monday-thursday	at	20:00

Informando ao agendamento que será executado o job de backup em um outro Storage.

Run = Full 	Storage = xpto	monday-thursday	at  20:00

Informando ao agendamento que será exeutado um job de backup do segundo até o quinto domingo do mês às 23:05.

Run = Full 	2nd-5th sunday	at 23:05	
Schedule {
Name = agenda_gfs
Run = Level=Differential    Pool=Diaria Monday-Thursday at 19:00

Run = Level=Full               Pool=Semanal 2nd 3rd 4th 5th Friday at 19:00

Run = Level=Full               Pool=Mensal 1st Friday at 19:00
}

No exemplo acima, teremos “backups” diários de “segunda às quinta-feiras“, semanais nas “segundas, terças, quartas e quintas sextas-feiras dos mês“, e mensais na “primeira sexta-feira do mês“.

Client

# Client (File Services) to backup
Client {
  Name = bacula-fd
  Address = ba-vm-bkp-01
  FDPort = 9102
  Catalog = MyCatalog
  Password = "centos"          # password for FileDaemon
  File Retention = 30 days            # 30 days
  Job Retention = 6 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}

Name – Nome do Cliente.

Address – Fqdn ou ip do cliente.

FDPort – padrão 9102.

Catalog – Catálogo padrão MyCatalog.

Password – A senha do cliente – configurada também no arquivo bacula-fd.conf.

File Retention – Retenções dos índices dos arquivos do banco de dados.

Job Retention – Retenções dos índices dos arquivos do banco de dados.

AutoPrune – Limpeza dos jobs e arquivos do backup.

Storage

O Mesmo principio do client se aplica também no storage.

Storage {
  Name = File
# Do not use "localhost" here    
  Address = ba-vm-bkp-01                # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "centos"
  Device = FileStorage
  Media Type = File
}

Password – Senha do bacula-sd

Device – tipo de device do storage

Media Type – Tipo de storage

Para cada storage (sd) que for armazenar os backups, deverá conter o bacula-sd instalado e configurado conforme o director-dir. A configuração do storage precisa estar igual ao arquivo bacula-sd.conf.

Catalog

Maneira com que o Bacula se conecta no banco de dados dele.
dbname – nome do banco de dados
dbuser – usuário que se conecta no banco de dados
dbpassword – senha do banco de dados

# Generic catalog service
Catalog {
  Name = MyCatalog
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:sqlite3"; dbaddress = 127.0.0.1; dbport =  
  dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
}

Messages

Maneira como Bacula encaminha as mensagens.
O Bacula possui dois recursos de messages.
1 Standard – Saída padrão das mensagem.
1 Daemon – Mensagens de monitoração.
bsmtp – Aplicativo que envia os e-mails e que formula as mensagens.

  • Standard

mailcommand – São mensagens de termino dos jobs de backup (LOG).
operatorcommand – Também encaminha email, porém seu objetivo principal é informar de intervenções necessárias do Bacula.

  • Daemon

Se houver algum problema com o director, será enviadas mensagens de monitoração dos serviços do Bacula.
Para receber os emails, basta alterar o endereço root@localhost pelo o email desejado.

#  and to the console
Messages {
  Name = Standard
#
  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 = evandro.couto@d2d.com.br = all, !skipped
  operator = evandro.couto@d2d.com.br = mount
  console = all, !skipped, !saved
  append = "/var/spool/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 = evandro.couto@d2d.com.br = all, !skipped
  console = all, !skipped, !saved
  append = "/var/log/bacula.log" = all, !skipped
}

Pool

Local de definição de retenção dos backup.
Responsável por controloar o tempo dos backups.
Quando é submetido um job de backup é submetido para um Pool.
É dentro de um Pool que se configura o comportamento do volume.

No backup em disco, é possível limitar o tamanho do volume.
No backup em disco o ideal é que tenha vários volumes.
Na Pool é possível configurar para que o label seja criado automaticamente.
Já para Fitas jamais utilize a varável Maximum Volume Bytes.

# Default pool definition
Pool {
  Name = Default
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
}

# File Pool definition
Pool {
  Name = File
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
  Maximum Volumes = 100               # Limit number of Volumes in Pool
}

Pool Scratch – Aplicado quando se possui robôs de fitas.

O Nome dele é reservado dentro do Bacula. Toda vez que se cria volumes em branco e não houver como gravar em outros volumes, o Bacula automaticamente grava na pool scratch.
Pode ser utilizado em disco, porém o recomendado é para robôs de fitas.
Se utilizar a pool scratch para backup em disco, não será possível utilizar o label automático.

# Scratch pool definition
Pool {
  Name = Scratch
  Pool Type = Backup
}

Monitor

Console do backup com os direitos restritos. Só faz sentido instalar em servidores com ambiente gráfico.

Console {
  Name = bacula-mon
  Password = "centos"
  CommandACL = status, .status
}

Continua …
Fonte:
www.bacula.org
www.bacula.com.br

>_Backup com Bacula – bacula-dir.conf – 1.7
Tagged on:

Deixe uma resposta

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

%d blogueiros gostam disto: