Instalação e configuração do Bacula com interface web (Bweb/Brestore)
O Bacula é um software de criação e gerenciamento de backups. Nesse tutorial serão mostrados os passos para instalação e configuração do mesmo, juntamente com a interface web de gerenciamento (Bweb) e recuperação (Brestore) de backups.
Instalação do Bacula no Ubuntu/Debian
Informações gerais:
# apt-get install bacula
Serão instalados os seguintes pacotes: bacula-client bacula-common bacula-common-mysql bacula-console bacula-director-common bacula-director-mysql bacula-fd bacula-sd bacula-sd-mysql bacula-server dbconfig-common
Será instalado o bacula director, file daemon e storaged daemon. Para a instalação parcial deverão ser instalados o bacula-director-common, bacula-fd e bacula-sd respectivamente.
No ambiente analisado, todos os daemons estão instalados na mesma máquina.
Bacula Director (bacula-dir.conf):
Gerenciador; Núcleo do programa; é responsável por supervisionar todas as operações de backup, restauração, controle e verificação de arquivos.
Bacula Storage:
Responsável pelo armazenamento, leitura e escrita em fita, disco ou outros dispositivos. Deve ser instalado onde os arquivos serão armazenados, podendo ser instalado em mais de uma máquina.
Bacula File Daemon:
Este é o cliente do Bacula. Deve ser instalado em todas as máquinas onde serão realizados os backups.
Após configuração dos daemons, os mesmos devem ser reinicializados.
- Ubuntu Server 10.04
- MySQL Server 5.0
- Apache2
Instalação do Bacula
A instalação do Bacula através do gerenciador de pacotes é bastante simples, basta executar o comando abaixo que serão instaladas todas as dependências, inclusive o MySQL, que é o banco de dados padrão do programa. Também há suporte ao banco de dados Postgres, porém devem ser especificados os pacotes, mas não será abordado nesse tutorial.# apt-get install bacula
Serão instalados os seguintes pacotes: bacula-client bacula-common bacula-common-mysql bacula-console bacula-director-common bacula-director-mysql bacula-fd bacula-sd bacula-sd-mysql bacula-server dbconfig-common
Será instalado o bacula director, file daemon e storaged daemon. Para a instalação parcial deverão ser instalados o bacula-director-common, bacula-fd e bacula-sd respectivamente.
Configuração do Bacula
O Bacula é um sistema distribuído, sendo formado por 3 daemons: director, storage daemon e file daemon. Cada daemon "executa" independentemente, podendo estar localizado em máquinas separadas. O file daemon deve estar instalado em todas as máquinas clientes.No ambiente analisado, todos os daemons estão instalados na mesma máquina.
Bacula Director (bacula-dir.conf):
Gerenciador; Núcleo do programa; é responsável por supervisionar todas as operações de backup, restauração, controle e verificação de arquivos.
Bacula Storage:
Responsável pelo armazenamento, leitura e escrita em fita, disco ou outros dispositivos. Deve ser instalado onde os arquivos serão armazenados, podendo ser instalado em mais de uma máquina.
Bacula File Daemon:
Este é o cliente do Bacula. Deve ser instalado em todas as máquinas onde serão realizados os backups.
Configuração do director
Altere as configurações de acordo com a necessidade/ambiente.
Director { #definições do gerenciador/director
Name = ubuntuu-dir #nome do gerenciador/director
DIRport = 9101 #porta de comunicação do director
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 10 #máximo de conexões simultâneas
Password = "yveAet993vzsWug3KoZUKjVbdZy0nrSqIqQCFH80rIVS" #senha cliente terminal/console
Messages = Daemon #tipo de mensagens a serem geradas no log
}
JobDefs { #definições de padrão de tarefa
Name = "DefaultJob"#nome do padrão
Type = Backup #tipo de tarefa (backup/restore)
Level = Incremental #tipo de backup (incremental/diferencial/full)
Client = ubuntuu-fd #cliente
FileSet = "Full Set" #nome do conjunto de arquivos
Schedule = "Diario" #tipo de agendamento
Storage = File #tipo de armazenamento (file/tape)
Messages = Standard #padrão de mensagens geradas (log)
Pool = File #tipo de pool utilizado
Priority = 10 #prioridade
Write Bootstrap = "/var/lib/bacula/%c.bsr"
}
Job { #definição de tarefa
Name = "BackupClient1" #nome da tarefa
JobDefs = "DefaultJob" #padrão de tarefa
}
Job { #definição da tarefa
Name = "RestoreFiles" #nome da tarefa
Type = Restore #tipo de tarefa (backup/restore)
Client=ubuntuu-fd #cliente
FileSet="Full Set" #nome do conjunto de arquivos
Storage = File #tipo de armazenamento (file/tape)
Pool = Default #tipo de pool utilizado
Messages = Standard #padrão de mensagens geradas (log)
Where = /mnt/bacula-restores #onde será restaurado o backup
}
FileSet { #conjunto de arquivos e diretórios
Name = "Home Set" #nome do conjunto
Include {
Options {
signature = MD5 #hash para verificação de integridade
}
File = /home #arquivos selecionados
}
Exclude {
File = /home/backup #arquivos excluídos
}
}
Schedule { #agendamento
Name = "Diario" #nome do agendamento
Run = Full sun-sat at 23:10 #definição do agendamento (Full de domingo (sunday) a sabado (saturday) as 23:10)
}
Client { #definições do cliente
Name = ubuntuu-fd #nome do cliente
Address = 10.113.254.246 #ip do cliente (File Daemon)
FDPort = 9102 #porta de comunicação com o cliente
Catalog = MyCatalog #catálogo de arquivos
Password = "zWfAKqdbZb1PjYL9Ud-HForFnoUzkJBSM" #senha cliente (File Daemon)
File Retention = 30 days #retenção dos arquivos (30 dias)
Job Retention = 6 months #retenção da tarefa (6 meses)
AutoPrune = yes #limpeza/supressão automática do catálogo após expirado o tempo de retenção (não afeta os dados do volume)
}
Storage { #definição do dispositivo de armazenamento
Name = File #nome do dispositivo
Address = 10.113.254.246 #ip do dispositivo de armazenamento (Storaged Daemon)
SDPort = 9103 #porta de comunicação com a storaged
Password = "jKNZOR8Kl8nSuHFWi6H9txhEyTqODE3gW" #senha dispositivo (Storaged Daemon)
Device = FileStorage #dispositivo (Storaged Daemon)
Media Type = File #tipo de armazenamento
}
Pool { #definição do tipo de volume/partição a ser montado
Name = Default #nome do volume
Pool Type = Backup #tipo de pool Backup/Archive/Cloned/Migration/Copy/Save (atualmente apenas backup implementado)
Recycle = yes #bacula automaticamente recicla os volumes (caso não possa ser adicionado mais volumes será rescrito sobre os expirados)
AutoPrune = yes #limpeza/supressão automática do catálogo após expirado o tempo de retenção (não afeta os dados do volume)
Volume Retention = 365 days #tempo de retenção de 365 dias
}
Console {
Name = ubuntuu-mon
Password = "8UZ_p8sbi38XUmDGT5I3tt4egyM7uTpDx"
CommandACL = status, .status
}
Name = ubuntuu-dir #nome do gerenciador/director
DIRport = 9101 #porta de comunicação do director
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 10 #máximo de conexões simultâneas
Password = "yveAet993vzsWug3KoZUKjVbdZy0nrSqIqQCFH80rIVS" #senha cliente terminal/console
Messages = Daemon #tipo de mensagens a serem geradas no log
}
JobDefs { #definições de padrão de tarefa
Name = "DefaultJob"#nome do padrão
Type = Backup #tipo de tarefa (backup/restore)
Level = Incremental #tipo de backup (incremental/diferencial/full)
Client = ubuntuu-fd #cliente
FileSet = "Full Set" #nome do conjunto de arquivos
Schedule = "Diario" #tipo de agendamento
Storage = File #tipo de armazenamento (file/tape)
Messages = Standard #padrão de mensagens geradas (log)
Pool = File #tipo de pool utilizado
Priority = 10 #prioridade
Write Bootstrap = "/var/lib/bacula/%c.bsr"
}
Job { #definição de tarefa
Name = "BackupClient1" #nome da tarefa
JobDefs = "DefaultJob" #padrão de tarefa
}
Job { #definição da tarefa
Name = "RestoreFiles" #nome da tarefa
Type = Restore #tipo de tarefa (backup/restore)
Client=ubuntuu-fd #cliente
FileSet="Full Set" #nome do conjunto de arquivos
Storage = File #tipo de armazenamento (file/tape)
Pool = Default #tipo de pool utilizado
Messages = Standard #padrão de mensagens geradas (log)
Where = /mnt/bacula-restores #onde será restaurado o backup
}
FileSet { #conjunto de arquivos e diretórios
Name = "Home Set" #nome do conjunto
Include {
Options {
signature = MD5 #hash para verificação de integridade
}
File = /home #arquivos selecionados
}
Exclude {
File = /home/backup #arquivos excluídos
}
}
Schedule { #agendamento
Name = "Diario" #nome do agendamento
Run = Full sun-sat at 23:10 #definição do agendamento (Full de domingo (sunday) a sabado (saturday) as 23:10)
}
Client { #definições do cliente
Name = ubuntuu-fd #nome do cliente
Address = 10.113.254.246 #ip do cliente (File Daemon)
FDPort = 9102 #porta de comunicação com o cliente
Catalog = MyCatalog #catálogo de arquivos
Password = "zWfAKqdbZb1PjYL9Ud-HForFnoUzkJBSM" #senha cliente (File Daemon)
File Retention = 30 days #retenção dos arquivos (30 dias)
Job Retention = 6 months #retenção da tarefa (6 meses)
AutoPrune = yes #limpeza/supressão automática do catálogo após expirado o tempo de retenção (não afeta os dados do volume)
}
Storage { #definição do dispositivo de armazenamento
Name = File #nome do dispositivo
Address = 10.113.254.246 #ip do dispositivo de armazenamento (Storaged Daemon)
SDPort = 9103 #porta de comunicação com a storaged
Password = "jKNZOR8Kl8nSuHFWi6H9txhEyTqODE3gW" #senha dispositivo (Storaged Daemon)
Device = FileStorage #dispositivo (Storaged Daemon)
Media Type = File #tipo de armazenamento
}
Pool { #definição do tipo de volume/partição a ser montado
Name = Default #nome do volume
Pool Type = Backup #tipo de pool Backup/Archive/Cloned/Migration/Copy/Save (atualmente apenas backup implementado)
Recycle = yes #bacula automaticamente recicla os volumes (caso não possa ser adicionado mais volumes será rescrito sobre os expirados)
AutoPrune = yes #limpeza/supressão automática do catálogo após expirado o tempo de retenção (não afeta os dados do volume)
Volume Retention = 365 days #tempo de retenção de 365 dias
}
Console {
Name = ubuntuu-mon
Password = "8UZ_p8sbi38XUmDGT5I3tt4egyM7uTpDx"
CommandACL = status, .status
}
Configuração do cliente (file daemon)
Altere as configurações de acordo com a necessidade/ambiente.
FileDaemon { #definições file daemon
Name = ubuntuu-fd #nome (mesmo do bacula-dir.conf)
FDport = 9102 #porta de comunicacao com o director
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 20 #maximo de tarefas simultâneas
}
Director { #dados para comunicação com o director
Name = ubuntuu-dir #nome (mesmo do bacula-dir.conf)
Password = "zWfAKqdbZb1PjYL9Ud-HForFnoUzkJBSM" #senha (mesmo do bacula-dir.conf)
}
Messages { #definição do tipo de mensagem a ser logada
Name = Standard #nome do padrão
director = ubuntuu-dir = all, !skipped, !restored #parametros a serem logados, no caso todos(all), exceto saída (skipped) e restauração (restore)
}
Name = ubuntuu-fd #nome (mesmo do bacula-dir.conf)
FDport = 9102 #porta de comunicacao com o director
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 20 #maximo de tarefas simultâneas
}
Director { #dados para comunicação com o director
Name = ubuntuu-dir #nome (mesmo do bacula-dir.conf)
Password = "zWfAKqdbZb1PjYL9Ud-HForFnoUzkJBSM" #senha (mesmo do bacula-dir.conf)
}
Messages { #definição do tipo de mensagem a ser logada
Name = Standard #nome do padrão
director = ubuntuu-dir = all, !skipped, !restored #parametros a serem logados, no caso todos(all), exceto saída (skipped) e restauração (restore)
}
Configuração do dispositivo de armazenamento (storaged daemon)
As configurações devem ser alteradas de acordo com a necessidade/ambiente.
Storage { #definições storaged
Name = ubuntuu-sd #nome
SDPort = 9103 #porta de comunicação com o director
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20 #maximo de tarefas simultâneas
# SDAddress = 0.0.0.0 #ip da máquina
}
Director { #definição do director que terá acesso ao "daemon" de armazenamento
Name = ubuntuu-dir #nome
Password = "jKNZOR8Kl8nSuHFWi6H9txhEyTqODE3gW" #senha
}
Device { #definições do dispositivo de armazenamento
Name = FileStorage #nome (mesmo a ser usado no director)
Media Type = File #tipo de media/dispositivo - File/Tape
Archive Device = /mnt/backup #ponto de montagem do volume
LabelMedia = yes; #bacula permitir media sem rótulo/nomeação
Random Access = Yes;
AutomaticMount = yes; #quando o dispositivo abrir, lê-lo.
RemovableMedia = no;
AlwaysOpen = no;
}
Messages { #definição do tipo de mensagem a ser logada
Name = Standard #nome do padrão
director = ubuntuu-dir = all #parametros a serem logados, no caso todos(all)
}
Name = ubuntuu-sd #nome
SDPort = 9103 #porta de comunicação com o director
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20 #maximo de tarefas simultâneas
# SDAddress = 0.0.0.0 #ip da máquina
}
Director { #definição do director que terá acesso ao "daemon" de armazenamento
Name = ubuntuu-dir #nome
Password = "jKNZOR8Kl8nSuHFWi6H9txhEyTqODE3gW" #senha
}
Device { #definições do dispositivo de armazenamento
Name = FileStorage #nome (mesmo a ser usado no director)
Media Type = File #tipo de media/dispositivo - File/Tape
Archive Device = /mnt/backup #ponto de montagem do volume
LabelMedia = yes; #bacula permitir media sem rótulo/nomeação
Random Access = Yes;
AutomaticMount = yes; #quando o dispositivo abrir, lê-lo.
RemovableMedia = no;
AlwaysOpen = no;
}
Messages { #definição do tipo de mensagem a ser logada
Name = Standard #nome do padrão
director = ubuntuu-dir = all #parametros a serem logados, no caso todos(all)
}
Após configuração dos daemons, os mesmos devem ser reinicializados.