Sunteți pe pagina 1din 20

Tutorial Bacula: Configurando Storage Daemon, File Daemon e Console

Depois de algum tempo enrolado com provas da faculdade, estou eu aqui para mais uma parte do
tutorial sobre Bacula. Aqui vamos ver como configurar os serviços Storage Daemon, File Daemon e
Console. O Director Daemon será configurado a parte por possuir uma grande complexibilidade e,
por isso, ser um assunto muito extenso.

Arquivo /etc/bacula/bacula-sd.conf (Storage Daemon)

Vamos começar pelo Storage Daemon. Segue abaixo o arquivo de configuração /etc/bacula/bacula-
sd.conf:
# Configuração para o Servidor de Armazenamento.
# Esse é o servidor no qual está instalada fisicamente a mídia de armazenamento

#
# Aqui são definidas as configurações do próprio servidor de armazenamento
#
Storage {

# Nome do Storage Daemon, esse é o nome utilizado pelo bacula,


# não necessariamente precisa ser o hostname
Name = sf1-sd
# Porta utilizada pelo Director Daemon para acessar o Sotorage Daemon
SDPort = 9103 Daemon
# Diretório de trabalho (temporário) do Storage Daemon
WorkingDirectory = "/var/lib/bacula/working"
# Diretório onde é armazenado informação sobre o processo rodando
Pid Directory = "/var/run"
# Número de trabalhos rodando ao mesmo tempo
# Se você irá fazer mais de 1 backup ao mesmo tempo, indique o número
aqui
# No meu caso será somente 1 trabalho mesmo
Maximum Concurrent Jobs = 1

#
# Aqui é listado a configuração para conexão com o Director Daemon
#
Director {

# Nome do Director Daemon (cadastrado no /etc/bacula/bacula-dir.conf)


Name = sf1-dir
# Senha que o Director irá usar para acessar o Storage
Password = "senha"

#
# Define as configurações da unidade de fita
#
Device {

# Nome do dispositivo
Name = AIT-1
# Tipo do dispositivo, pode ser File (arquivos, partições), Tape (fitas), Fifo
(sistemas de acesso sequencial) ou DVD
Device Type = Tape
# Nome do dispositivo pelo qual o linux irá acessar a unidade de fita
Archive Device = /dev/nst0
# Diz se a fita ira receber um nome pelo Bacula
LabelMedia = yes;
# As opções abaixo não tive tempo de procurar saber para que servem,
# mas ficando no padrão já funcionan
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;

#
# Essa opção envia as possíveis mensagens geraradas para o Director
#
Messages {

# Nome da configuração de mensagens


Name = Standard
# Nome do Director Daemon
# all significa que todas mensagens serão enviadas
director = sf1-dir = all

Obs.: Os comentários originais do arquivo de configuração foram tirados para uma melhor
visualização, e nem todas as opções possíveis para configuração do Storage Daemon são tratadas
aqui, somente as necessárias para o correto funcionamento do sistema estão tratadas aqui. Isso
também vale para todos os outros arquivos de configuração.

As configurações acima servem para disponibilizar um dispositivo de backup (que no meu caso é
uma unidade AIT-1 Turbo, mas pode ser qualquer outra unidade de fita, além de gravadores de
DVDs e CDs, partições de HDs, etc) para o Director, que irá acessa-lo no momento do backup ou
da recuperação dos dados. Os nomes dados é você quem escolhe, não é necessário ser o nome
correto do dispositivo

Acredito que com os comentários nas configurações já seja possível entender a configuração do
Storage Daemon. Qualquer duvida ou opinião será bem-vinda para melhoria do artigo.

Arquivo /etc/bacula/bacula-fd.conf (File Daemon)


#
# Esse é o arquivo responsável pelas configurações do cliente,
# ou seja, o local onde estão os dados a serem incluidos no backup
#
#
# Aqui é listado a configuração para conexão com o servidor principal do bacula
#
Director {

# Nome do Director Daemon que irá acessar este File Daemon


Name = sf1-dir
# Senha que o Director usará para acessar este cliente
Password = "senha"

#
# Especificação das configurações globais do cliente
#
FileDaemon {

# Nome deste cliente, pode ser qualquer nome que o identifique melhor
Name = sf1-fd
# Porta pela qual o servidor bacula ira acessar o cliente
FDport = 9102
# As opções abaixo são indenticas as do Storage Daemon
WorkingDirectory = /var/lib/bacula/working
Pid Directory = /var/run
Maximum Concurrent Jobs = 1

#
# Essa opção envia as possíveis mensagens geradas para o Director
#
Messages {

# Nome da configuração de mensagens


Name = Standard
# Nome do Director Daemon
# all significa que todas mensagens serão enviadas
# O ! significa exceto
director = sf1-dir = all, !skipped, !restored

Arquivo /etc/bacula/bconsole.conf (File Daemon)


#
# Bacula User Agent (or Console) Configuration File
#

Director {

# Nome do Director Daemon que o console irá acessar


Name = sf1-dir
# Porta pela qual o console irá acessar o Director
DIRport = 9101
# Endereço do Director, pode ser o hostname ou endereço IP
address = sf1
# Senha com a qual o console irá acessar o Director
Password = "senha"

Pronto, com essas configurações já estamos 30% do servidor pronto, resta agora configurar o
Director Daemon, que corresponde por 50%, e aprender a operar o Bacula pelo console. Teremos
mais 2 posts para terminar o artigo e estarmos aptos a colocar o sistema para rodar. Espero terminar
esse artigo nas próximas 2 semanas, e, como sempre, espero a contribuição de vocês para melhorar
o artigo.

Obs.: As porcentagens foram calculadas por mim, sem nenhuma pretenção de estarem certas, mas
quem sabe eu tenha acertado mesmo ;-)

Configurando Director Daemon


Voltei para postar mais uma parte do tutorial sobre Bacula, desta vez explicarei sobre a
configuração do Director Daemon. Como já havia dito, é a configuração mais complexa do Bacula,
e, como irão perceber, o arquivo de configuração é bem extenso. Eu modifique toda a disposição do
arquivo de configuração em relação ao padrão, dividindo-o em seções que, na minha opinião, fica
bem mais fácil de ser entendido.

Coloquei algumas observações em forma de comentário no meio das configurações. Basicamente


todos os pontos importantes estão comentados. Os motivos para os pontos que não estão
comentados são: a) não havia necessidade de comentar, é auto-explicativo; b) a configuração do
item logo acima é igual e já esta comentado (devemos evitar redundância); c) eu realmente esqueci
de comentar ;-), nesse caso me avisem para que possa corrigir.

Vamos ver as configurações:


#
# Configuracoes globais do servidor bacula
#
Director {
# Nome do Director Daemon – Servidor Bacula que estamos configurando
agora
Name = sf1-dir
# Porta pela qual o servidor Bacula será acessado (normalmente pelo
console)
DIRport = 9101
# Arquivo contendo as instruções SQL usadas para acessar o banco de dados
QueryFile = "/etc/bacula/query.sql"
# Diretório de trabalho do Director
WorkingDirectory = "/var/lib/bacula/working"
PidDirectory = "/var/run"
# Numero máximo de trabalhos ao mesmo tempo
Maximum Concurrent Jobs = 1
# Senha necessaria para acessar o servidor bacula pelo console
Password = "senha"
# Configuração de mensagens utilizadas pelo Director
Messages = Mensagens

######################################################################
############
## Banco de dados a ser usado para armazenar as informações dos backups
######################################################################
############
Catalog {
# Nome do catálogo
Name = MyCatalog
# Nome do banco de dados, usuário e senha para ser acessado pelo Bacula
# Por padrão a senha do banco de dados esta em branco, caso você altere a
senha
# no banco de dados, deve colocar a nova senha aqui
dbname = bacula; user = bacula; password = ""

######################################################################
############
# Seção clientes
# Configura os clientes onde estão os dados a serem armazenados em backup
######################################################################
############
###################
## Servidor ServArq
###################
Client {
Name = ServArq
# Nome ou endereço IP do cliente
Address = servarq
# Porta de acesso ao cliente, configurada no arquivo de configuração do
cliente
FDPort = 9102
# Catalogo a ser utilizado no banco de dados
Catalog = MyCatalog
# Senha para se acessar o cliente, configurada no arquivo de configuração
do cliente
Password = "senha"
# Tempo em que o backup do cliente sera armazenado no banco de dados
# Passado esse tempo o registro desse arquivo sera excluído
# Isso não afeta o backup que esta armazenado
File Retention = 30 days
# Tempo em que os trabalhos do cliente serão armazenados no baco de
dados
# Passado esse tempo o registro desse arquivo sera excluído
# Isso não afeta o backup que esta armazenado
Job Retention = 30 days
# Este comando irá apagar os registros dos arquivos e jobs,
# citados acima, automaticamente
AutoPrune = yes

# Este cliente é praticamente igual ao cliente acima, somente muda


# o tempo de retenção dos arquivos e dos jobs
# Fiz dessa forma pois os backups mensais devem ser guardados por
# um tempo muito maior que os backups diários e semanais
Client {
Name = ServArqMensal
Address = servarq
FDPort = 9102
Catalog = MyCatalog
Password = "senha"
# Estou deixando para 20 anos pois o backup mensal terá retenção de 20
anos
File Retention = 20 years
Job Retention = 20 years
AutoPrune = yes

#############################################
## ServApl – servidor de aplicações
## Basicamente é repetida a configuração do ServArq
## inclusive uma configuração distinta para o backup
## mensal
#############################################
Client {
Name = ServApl
Address = servapl
FDPort = 9102
Catalog = MyCatalog
Password = "senha"
File Retention = 30 days
Job Retention = 30 days
AutoPrune = yes

Client {
Name = ServAplMensal
Address = servapl
FDPort = 9102
Catalog = MyCatalog
Password = "senha"
File Retention = 20 years
Job Retention = 20 years
AutoPrune = yes
}

###############
## ServBD – servidor de banco de dados
###############
Client {
Name = ServBD
Address = servbd
FDPort = 9102
Catalog = MyCatalog
Password = "senha"
File Retention = 30 days
Job Retention = 30 days
AutoPrune = yes

Client {
Name = ServBDMensal
Address = servbd
FDPort = 9102
Catalog = MyCatalog
Password = "senha"
File Retention = 20 years
Job Retention = 20 years
AutoPrune = yes

######################################################################
############
# Seção Pool
######################################################################
############
Pool {
# Define o Pool para o backup semanal completo
Name = Semanal
Pool Type = Backup
# As 2 opções abaixo são utilizada para que a fita sera auto reciclada,
# ou seja, eh como se dissesse que os dados da fita podem ser apagados
# e gravados novos dados em seu lugar
Recycle = yes
AutoPrune = yes
# Define quanto tempo os dados ficarão na fita sem poderem ser apagados.
# Somente a depois desse tempo a fita sera reciclada
Volume Retention = 13 days
# Define a quantidade máxima de trabalhos que podem ser armazenados em
uma fita
# sem que ela precise ser reciclada
Maximum Volume Jobs = 3
# Define o numero máximo de fitas que sera utilizada pelo Pool
Maximum Volumes = 2
}

Pool {
# Define o Pool para o backup diário incremental.
# As opções abaixo são as mesmas do Pool Semanal.
Name = Diario
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 7 days
Maximum Volume Jobs = 12
Maximum Volumes = 1

Pool {
# Define o Pool para o backup Mensal completo.
# As opções abaixo são as mesmas das anteriores.
# Aqui não definiremos um máximo de volumes, isso faz com que
# possa ser usado quantos volumes forem necessários.
Name = Mensal
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 20 years
Maximum Volume Jobs = 3

# O Pool Defaul deve ser criado pois os jobs exigem que seja
# definido o parâmetro Pool, e como não é bom utilizar um dos Pools
# acima, criamos um default. Ele nunca será usado de fato.
Pool {
Name = Default
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days

######################################################################
############
# Seção Schedule
# Agenda o nível , a data e a hora do backup para os jobs
######################################################################
############
# É necessário criar um agendamento para cada cliente, pois não é
# possível fazer backup de vários clientes com o mesmo trabalho de backup
##########
# ServArq
##########
Schedule {
# Agenda o backup completo para a segunda, terceira, quarta e quinta (caso
haja)
# segunda-feiras de cada mês, e também os backup diários incrementais.
# Se o mês não tiver 5 segunda-feiras, a quinta segunda-feira será ignorada.
# O backup sera sempre as 22:00 horas.
# Foram passados dois parâmetros Run pois um mesmo agendamento pode
# agendar datas e horários diferentes para o mesmo backup.
# Nome do agendamento
Name = ServArq
# Indica o nível, o dia e a hora do backup
Run = Full 2nd-5th Monday at 10:00pm
Run = Incremental tue-sun at 10:00pm

}
# Agenda o backup mensal para o servidor ServArq
Schedule {
Name = ServArqMensal
Run = Full 1st Monday at 10:00pm

############
# ServApl
############
# Agenda o backup completo e incremental para o servidor ServApl
# O backup sera sempre as 22:10 horas
Schedule {
Name = ServApl
Run = Full 2nd-5th Monday at 10:10pm
Run = Incremental tue-sun at 10:10pm

# Agenda o backup mensal para o servidor ServApl


Schedule {
Name = "ServAplMensal"
Run = Full 1st Monday at 10:10pm

############
# ServBD
############
# Agenda o backup completo e incremental para o servidor ServBD
# O backup sera sempre as 22:20 horas
Schedule {
Name = ServBD
Run = Full 2nd-5th Monday at 10:20pm
Run = Incremental tue-sun at 10:20pm

}
# Agenda o backup mensal para o servidor ServBD
Schedule {
Name = ServBDMensal
Run = Full 1st Monday at 10:20pm

######################################################################
############
# Seção FileSet
# Determina quais arquivos devem ser feitos backup e quais ficarão fora dos backups
######################################################################
############
FileSet {
Name = ServArq
# Define quais arquivos ou diretórios farão parte do backup
Include {

# Define algumas opções para o backup


Options {

# Opção de segurança
signature = MD5
# Compressão dos dados usando GZIP
# O número 9 indica o taxa de compressão, quanto
mais alto
# mais compressão. Vai de 1 a 9
compression=GZIP9
# Exclui do backup os arquivos com extensão tmp
wildfile = "*.tmp"
# Diz que os arquivos indicados em wildfile não
farão parte do backup
Exclude = yes

}
# Define quais diretórios farão parte do backup
File = /arquivos/dados
File = /etc

FileSet {
Name = "ServApl"
Include {

Options {

signature = MD5
IgnoreCase = yes
compression=GZIP9
wildfile = "*.tmp"
Exclude = yes

}
# Por ser sistema de arquivos Windows é necessário indicar a
letra da unidade
# A barra (/) não esta errada, por ser em Linux é essa mesmo que
temos de usar
File = "F:/Aplicacoes"

FileSet {
Name = "ServBD"
Include {

Options {

signature = MD5
IgnoreCase = yes
compression=GZIP9

}
File = "G:/BKPBancos"

######################################################################
############
# Seção Storage
# Configura qual servidor esta com a unidade de fita, qual unidade de fita usar
######################################################################
############
Storage {
# Nome do dispositivo a ser usado no Director
Name = AIT-1
# Endereço do servidor, pode ser o nome ou o endereço IP
Address = ServArq
# Porta pela qual o servidor de Storage será acessada
SDPort = 9103
# Senha com a qual o Director acessará o Storage Daemon
Password = "senha"
# Dispositivo configurado no Storage Daemos que iremos utilizar
Device = AIT-1

######################################################################
############
# Seção Job
# Configura os trabalhos de backup
######################################################################
############
# Para que se possa fazer um backup completo na segunda-feira e incremental
# nos demais dias da semana, é necessário que os dois tipos de backup sejam
# controlados por este mesmo job. É necessário que o Client e o FileSet também
# sejam os mesmo nos dois tipos de backup. Analisando a configuração veremos isso.
# Uma observação que deve ser feita é que, mesmo quando estiver agendado para
# executar o backup incremental, o Bacula poderá executar o backup Full. Dois motivos
# para que isso aconteça é: 1 – Nunca ter sido feito um backup full desses arquivos
antes;
# 2 – ter sido feito alguma mudança no FileSet.
############
# ServArq
############
# Define o trabalho para o backup semanal e diário do ServArq
Job {
# Nome do trabalho
Name = ServArq
# Tipo do trabalho, pode ser Backup ou Restore
Type = Backup
# Cliente que foi configurado acima
Client = ServArq
# File set do servidor ServArq configurado acima
FileSet = ServArq
# O storage configurado acima
Storage = AIT-1
# O agendamento para o backup do ServArq configurado acima
Schedule = ServArq
# O Pool configurado, mas que será indicado aqui apenas por que o Bacula
# exige esse parâmetro, não será utilizado
Pool = Default
# Os dois parâmetros abaixo serão os utilizados para indicar o Pool.
# Um indica o Pool o Pool para o backup Full e o outro para o Incremental.
# O Bacula que indica qual Pool será utilizado, conforme agendamento.
Full Backup Pool = Semanal
Incremental Backup Pool = Diario
# Configuração de mensagem utilizada por este Job
Messages = Mensagens
# Script que será executado antes da execução do backup. No caso, esse
script
# montará o dispositivo (caso não esteja montado) antes de ser feito o
backup.
# Mostrarei esse script no final dessa parte do artigo.
RunBeforeJob = "/usr/sbin/monta_tape.sh"
# Define a prioridade do Job, quanto menor o valor, a prioridade é maior
# O padrão é 10. É uma opção importante pois, caso os backups atrasem, a
execução
# será pela prioridade e não mais pelo horário.
Priority = 10
}

# Define o trabalho para o backup mensal do servidor ServArq


Job {
Name = ServArqMensal
Type = Backup
Client = ServArqMensal
FileSet = ServArq
Storage = AIT-1
# Neste caso informamos somente um Pool, pois o backup mensal
# será sempre completo
Pool = Mensal
Schedule = ServArqMensal
Messages = Mensagens
RunBeforeJob = "/usr/sbin/monta_tape.sh"
Priority = 10

# Define o trabalho de Restore o backup semanal do servidor ServArq


# O Job Restore é importante para restaurarmos um backup
# As opções são as mesmas dos Jobs de backup
Job {
Name = RestoreServArqSemanal
Type = Restore
Client = ServArq
FileSet = ServArq
Storage = AIT-1
Messages = Mensagens
Pool = Semanal
Where = /tmp/bacula-restores

Job {
Name = RestoreServArqDiario
Type = Restore
Client = ServArq
FileSet = ServArq
Storage = AIT-1
Messages = Mensagens
Pool = Diario
Where = /tmp/bacula-restores

Job {
Name = RestoreServArqMensal
Type = Restore
Client = ServArqMensal
FileSet = ServArq
Storage = AIT-1
Messages = Mensagens
Pool = Mensal
Where = /tmp/bacula-restores

###############
# ServApl
###############
Job {
# Define o trabalho para o backup semanal do servidor ServApl
Name = ServApl
Type = Backup
Client = ServApl
FileSet = ServApl
Storage = AIT-1
Schedule = ServApl
Pool = Default
Full Backup Pool = Semanal
Incremental Backup Pool = Diario
Messages = Mensagens
RunBeforeJob = "/usr/sbin/monta_tape.sh"
Priority = 11

Job {
Name = ServAplMensal
Type = Backup
Level = Full
Client = ServAplMensal
FileSet = ServAplMensal
Storage = AIT-1
Pool = Mensal
Schedule = ServAplMensal
Messages = Mensagens
RunBeforeJob = "/usr/sbin/monta_tape.sh"
Priority = 11

Job {
Name = RestoreServAplSemanal-sapp
Type = Restore
Client = ServApl
FileSet = ServApl
Storage = AIT-1
Messages = Mensagens
Pool = Semanal
Where = /tmp/bacula-restores

}
Job {
Name = RestoreServAplDiario
Type = Restore
Client = ServApl
FileSet = ServApl
Storage = AIT-1
Messages = Mensagens
Pool = Diario
Where = /tmp/bacula-restores

Job {
Name = RestoreServAplMensal
Type = Restore
Client = ServApl
FileSet = ServApl
Storage = AIT-1
Messages = Mensagens
Pool = Mensal
Where = /tmp/bacula-restores

###############
# ServBD
###############
Job {
# Define o trabalho para o backup semanal
Name = ServBD"
Type = Backup
Client = ServBD
FileSet = ServBD
Storage = AIT-1
Schedule = ServBD
Pool = Default
Full Backup Pool = Semanal
Incremental Backup Pool = Diario
Messages = Mensagens
RunBeforeJob = "/usr/sbin/monta_tape.sh"
Priority = 12

Job {
Name = ServBDMensal
Type = Backup
Level = Full
Client = ServBDMensal
FileSet = ServBDMensal
Storage = AIT-1
Pool = Mensal
Schedule = ServBDMensal
Messages = Mensagens
RunBeforeJob = "/usr/sbin/monta_tape.sh"
Priority = 12

Job {
Name = RestoreServBDSemanal
Type = Restore
Client = ServBD
FileSet = ServBD
Storage = AIT-1
Messages = Mensagens
Pool = Semanal
Where = /tmp/bacula-restores

Job {
Name = RestoreServBDDiario
Type = Restore
Client = ServBD
FileSet = ServBD
Storage = AIT-1
Messages = Mensagens
Pool = Diario
Where = /tmp/bacula-restores

Job {
Name = RestoreServBDMensal
Type = Restore
Client = ServBD
FileSet = ServBD
Storage = AIT-1
Messages = Mensagens
Pool = Mensal
Where = /tmp/bacula-restores

######################################################################
############
# Seção Mensagens
######################################################################
############
Messages {
Name = Mensagens
# Envia todas as mensagens geradas pelo Bacula para o arquivo
# /var/log/messages
syslog = all, !skipped, !saved

Esse é o script que será executado antes do primeiro Job do dia para montar a fita no Bacula:

Depois de criado o script, é só dar as


permissões adequadas e estará pronto.

Eu sei que esteticamente essa listagem do arquivo de configuração não ficou nada boa, mas espero
que todos tenham conseguido entende-lo. Não é mesmo complexo? Mas o grande problema é que,
talvez, para deixar as configurações mais simples tenha uma grande perda na flexibilidade do
sistema. O ideal seria um sistema menos complexo de se configurar e com toda flexibilidade que o
Bacula tem. Acho que vou fazer disso o meu projeto de TCC da faculdade ;-).

Um ponto que gostaria de comentar é sobre redundância, que falei no começo do post, que nesse
arquivo de configuração é abundante (pelo menos a meu ver). Uma mesmas configuração pode ser
encontrada em vários pontos diferentes da configuração. Acredito que isso seja uma coisa que gera
dificuldade para a maioria das pessoas entenderem como o Bacula funciona.

Como de praxe, peço para que comentem principalmente se o artigo precisar de alguma melhoria
para que fique mais fácil de entende-lo.

A próxima parte, a última (felizmente, não aguento mais escrever sobre Bacula :-\ ), trará a
explicação de como operar o sistema. Será um manual básico sobre as principais funções
necessárias para operação do sistema, sem se aprofundar muito. Pretendo faze-lo até a próxima
semana.

Iniciando o serviço e operando o sistema


Chegamos a última parte do tutorial. Aqui vou falar sobre como iniciar o serviço e operar o servidor
Bacula. Não veremos tudo, mas somente o essencial para que, a partir deste ponto, quem leu o
tutorial possa configurar e operar o sistema, mesmo que basicamente. Então, mãos-à-obra.

Para iniciarmos o sistema, os comando são:

# bacula-dir

# bacula-fd

# bacula-sd

que iniciam o Director Daemon, o File Daemon e o Storage Daemon respectivamente. Caso exista
algum erro no arquivo de configuração, irá aparecer uma mensagem apontando qual o erro e o
serviço não irá subir. Se for esse o caso, corrija os erros e execute o comando novamente. Se não
exibiu mensagem de erro alguma, então o sistema deve estar no ar. Caso queira confirmar, digite o
comando:
# ps aux | grep bacula

Esse comando exibirá todos os processos que estejam rodando e que contenham a sequência
"bacula". Se tudo deu certo, vamos operar o sistema.

Para operar o sistema, utilizamos o console do Bacula, no caso o bconsole. Digite o comando:

# bconsole

Feito isso já estará no console do Bacula. A partir de agora, os comando com * na frente são
referentes ao bconsole. A primeira ação a ser feita é nomear os volumes que serão utilizados. Para
isso, digite o comando

* label

Esse comando irá pedir um nome que você queira dar ao volume. Logo depois irá pedir para que
você indique em qual Pool você quer adicionar esse volume, será exibido os Pools que foram
configurados no arquivo de configuração do Director. Escolhendo o Pool, ele irá gravar o nome do
volume no banco de dados e, pelo menos no caso de fitas, eu não sei como o bacula trata outros
dispositivos, também gravará o nome na própria fita. Você deve fazer isso com todos os volumes
que irá utilizar no seu ciclo de backup. Se seguir o modelo deste tutorial, terá que nomear 1 volume
para os backups incrementais e 2 volumes para os backups semanais, além de 1 volume todo mês
para o backup mensal.

Se você estiver utilizando fitas para fazer backup, caso precise renomear alguma fita, o comando
label não irá funcionar. Para isso terá que utilizar o utilitário btape do próprio bacula. Não vou
entrar em detalhes sobre o btape, a unica dica que irei passar é que é preciso parar o serviço do
bacula, em especial o bacula-sd, para poder utiliza-lo. A sintaxe é:

# btape /dev/nts0

Caso utiliza outro dispositivo que não o /dev/nts0, substitua-o pelo qual utilizar. Depois deste
comando você irá entrar em um console igual ao bconsole, mas com opções diferentes.

Depois de nomear os volumes com o comando label, praticamente só será necessário trocar os
dispositivos, caso sejam dispositivos removíveis, quando necesário.

Temos também o comando mount, que tem funcionalidade de montar o dispositivo. Caso você
esteja usando somente fitas, simplesmente execute o comando no console e irá montar a fita que
estiver dentro da unidade. Caso multiplos dispositivos de armazenamento, pode ser necesário usar a
sintaxe:

* mount

Para desmontar um volume montado, utilize o comando umount. A utilização é igual ao comando
mount.

Em alguns casos, quando for necessário apagar os dados do volume (por exemplo, quando o volume
ficar com o status de used), ou quando, por algum motivo, o volume ficar com status de erro, será
necessário executar o comando purge. Esse comando também serve para outras funções, mas só vi
necessidade de utiliza-lo para apagar dados do volume. Digitando o camando purge no console,
serão apresentadas 3 opções: 1: files; 2: jobs; 3: volume. Escolha a opção 3, então serão
apresentados os Pools que você configurou. Escolha o Pool onde esta cadastrado o volume que voçê
quer executar o purge. Após isso, será apresentado a lista com os volumes daquele Pool, bastando
voçê escolher o volume que você quer executar o purge. Pronto, se o volume estiver montado,
desmonte-o e monte-o novamente para que o status do volume seja alterado e se possa utilizar o
volume novamente.

Os próximos 3 comandos que irei passar são apenas para visualização de informações.

* list jobs - lista os trabalhos que estão em execução ou já executados e seus status

* list volumes - lista informações sobre todos os volumes

* status - mostra o status do sistema bacula, eu costumo consultar somenente o status do Director e
do Storage

Um comando muito util é o help, que te mostra todos os comandos. Sempre consulte o help para
descobrir mais funcionalidades ;-)

Finalmente, temos o comando restore, que serve para recuperar dados do backup. Sua utilização é
bem simples. Executando o comando restore no console, lhe será apresentado uma grande lista de
opções. Utilise a opção 3 para recuperação de dados. Será pedido agora o número do Job do qual
você quer recuperar alguma informação, tenha-o em mãos e informe-o. O bacula irá recuperar a
estrutura de diretórios para que se possa navegar por ela e buscar os arquivos que precisem ser
recuperados. depois de algum tempo ele irá te apresentar um pronpt ($). Os comandos de navegação
por pastas são os mesmos utilizados no linux, lembrando que o comando help tem opções próprias
para o prompt de recuperação. Navegue pelas pastas, quando encontrar o arquivo que quer, utilize o
comando

$ mark

Isso marcará o arquivo para recuperação. Caso marque o arquivo errado, utilize

$ unmark

para desmarcar. Caso queira marcar diretórios, utilize

$ markdir

e para desmarcar

$ unmarkdir

Para finalizar, de o comando

$ done

que indicará qual o volume que deverá estar montado para a recuperação, e também exibirá todos os
Jobs de restauração para que você escolha qual deles deve utilizar. Escolha o Job certo. Depois será
exibido os clientes cadastrados, escolha o cliente. Após isso serão apresentadas algumas
informações, onde a que você deve observar é onde será gravado o arquivo a ser recuperado
(Where). Marque esse local, pois é lá que você deverá ir para buscar o arquivo. Confirme a ação
digitando yes e pronto, os arquivos serão recuperados.
Só mais um comando, o comando run, que serve para executar um Job em um horário em que ele
não está agendado. Basicamente você digita run no console, é apresentado a lista de Jobs que você
tem cadastrado, escolha o qual você quer executar e pronto, o Job é executado (claro que deve ser
observado se o volume certo esta montado).

Só mais uma dica importante

Conforme foi apontado, em um dos comentários deste post, existe a possibilidade de perda total do
HD onde estão os dados e também o banco de dados. Caso isso ocorra teriamos um problema, pois
o bacula utiliza informação do banco de dados para a recuperação, logo, sem o banco de dados
complicaria a recuperação dos dados, isso no caso de usarmos fitas, em caso de DVD ou unidades
de disco creio que não teria esse problema.

Para evitar essa dor de cabeça existem duas soluções bem simples (a primeira nem tanto).

A primeira solução seria não manter o banco de dados no mesmo servidor em que se tem algum
dado sendo feito backup pelo bacula, utilizando um servidor "neutro", assim, se der problema no
servidor de arquivos o banco de dados estará salvo, e se der problema no servidor onde esta o banco
de dados, os dados estarão sem perigo.

A segunda solução, que eu considero melhor, é fazer o backup do banco de dados em um local
seguro, que seja de fácil recuperação, como em um outro servidor, ou em CD ou DVD.

Teria uma terceira opção, que seria recuperar o conteúdo da fita através do prompt do linux, com
alguns comandos do próprio linux que controlam a fita. Mas isso eu não tive tempo de verificar a
possibilidade (e acho que eu não quero gastar tempo com isso :-\ ), então recomendo a utilização da
segunda solução.

Para finalizar

Finalizando esta série de posts, me coloco a disposição para exclarecimento de dúvidas, aceito
criticas construtivas e conselhos para melhorias do artigo.

Eu tinha a idéia de organizar esses posts e criar um artigo contínuo, mas acho que não terei
paciência para isso. Caso alguém tenha tempo/coragem/paciência/vontade de fazer isso, fique a
vontade. Só gostaria que eu fosse avisado sobre isso, que os créditos fossem devidamente apontados
e que me avisassem de onde ficaria o artigo.

S-ar putea să vă placă și