Primeiramente aconselho criar um link no init para sua inicialização. Aconselho pois tive um problema criando no
rc.d, criando um script para iniciar via
rc.local, pois o daemon Bacula iniciava antes do banco de dados
MySQL e assim seu processo automático não funcionava da maneira esperada.
Primeiro aconselho criar um link para o daemon Bacula, da seguinte maneira:
# cd /etc/rc.d
# ln -s /etc/bacula/bacula bacula
Depois dar o privilégio de execução:
# chmod +x /etc/rc.d/bacula
Configurar sua inicialização no nível gráfico e multiusuário:
# chkconfig bacula on --level 35
Pronto, seu serviço será reiniciado. Agora, se lembra logo acima quando disse sobre o Bacula iniciar antes do banco de dados MySQL? Aqui está a solução.
Você precisa somente retardar o tempo para início do serviço, colocando um "sleep" da seguinte maneira:
# vim /etc/bacula/bacula
Edite o arquivo e coloque isso logo em seu início:
#! /bin/sh
#
# bacula This shell script takes care of starting and stopping
# the bacula daemons.
#
# This is pretty much watered down version of the RedHat script
# that works on Solaris as well as Linux, but it won't work everywhere.
#
# description: It comes by night and sucks the vital essence from your computers.
#
# All these are not *really* needed but it makes it
# easier to "steal" this code for the development
# environment where they are different.
#
sleep 40
SCRIPTDIR=/etc/bacula
#
#
Com isso, em sua inicialização ele levará 30 segundos para o início da execução do daemon bacula.
Para esse exemplo estou configurando os daemons: Bacula File, Bacula Director e Bacula Storage no servidor.
Primeiro vamos abrir o arquivo
bacula-dir.conf somente a princípio para definir nome e senhas do Bacula Director.
Logo do início do arquivo defina seu nome e senha. Ele é essencial, pois somente através dessa senha que o Bacula Director fará contato.
Logo em seguida vamos a configuração do Storage, edite o arquivo
bacula-sd.conf.
Storage { # definition of myself
Name = serverbackup-sd
SDPort = 9103 # A porta de trabalho
WorkingDirectory = "/var/bacula/working"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
Aqui eu aconselho deixar em padrão como vem como default, o que tem a prestar atenção é no máximo de jobs.
# List Directors who are permitted to contact Storage daemon
#
Director {
Name = serverbackup-dir
Password = "dasdajkshdjkahsdukhakhduihauidhuiasd"
}
Aqui você usará as credenciais e senha gerados no arquivo
bacula-dir.conf.
Logo após você criará as devices. Nesse ponto é possível configurar o backup para ser feito em disco, DVD, fita etc. Eu aconselho criar vários devices para a organização dos arquivos em pastas diferentes.
Device {
Name = Pastadearmazenamentons01# Esse nome você usará no arquivo do Director
Media Type = File
Archive Device = /backup/ns01
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = yes;
}
Para os diferentes tipos de mídia, o
Bacula possui exemplos de configuração.
Configuração do Bacula File:
Abra o arquivo
bacula-fd.conf. Esse é o arquivo que você configurará nas estações cliente, onde detém os arquivos a serem copiados.
Você precisará somente colocar o nome e senha do Director para permitir a comunicação entre o Bacula File e o Director. Logo após você deve colocar o nome para a estação cliente e gerar uma senha para ser configurada no Bacula Director para então fazer a cópia dos arquivos.
Configuração do Bacula Director
Abra o arquivo
bacula-dir.conf. Como seu nome e chave foram gerados, vamos para a próxima etapa desse arquivo.
Vamos para a sessão "Job". O arquivo default vem com um job default. Mas vamos fazer um job completo sem depender dele.
Job {
Name = "ns01" # Nome do job
Type = Backup
Level = Incremental
Schedule = "FullSexta" # Aqui é o nome da configuração de dias e horários de backup
Client = ns01-fd # Nome dado ao cliente do bacula-fd.conf
Messages = Standard
FileSet = "pastasns01" #Localização das pastas do cliente a serem copiadas.
Write Bootstrap = "/var/bacula/working/ns01.bsr"
Priority = 10
Storage = Storagens01 # Gerado no bacula-fd.conf, local onde será salvo ou fita
Pool = Poolns01 # Local onde será configurado a reciclagem, máximo do tamanho do volume etc
}
Logo após vamos configurar a localização das pastas que vamos copiar.
FileSet {
Name = "pastasns01" #Copiar o nome dado logo na configuração do Job
Include {
Options { signature = MD5 }
File = /etc
File = /var/lib/named
}
}
Para máquinas Windows a barra continua no padrão do shell, e não como é no Windows.
File = "C:/Backup"
Vamos para a configuração do "Schedule", que é responsável pela programação dos dias e hora a ser feito o backup.
Schedule {
Name = "FullSexta"
Run = Full fri at 03:00
Run = Incremental sat-thu at 03:05
}
Nesse exemplo estou fazendo a configuração para que ele faça o backup de todo o conteúdo das pastas às sextas-feiras. Nos outros dias ele vai copiar somente as mudanças realizadas em arquivos e pastas.
Então devemos configurar o cliente, lembre dos dados gerados no arquivo
bacula-fd.conf.
Client {
Name = ns01-fd
Address = 192.168.0.52 # Sempre opte pelo o IP aqui
FDPort = 9102
Catalog = MyCatalog
Password = "senhaDoFileDaemon" # password for FileDaemon
File Retention = 30 days # Aqui será o tempo em que seu backup ficará retido
Job Retention = 6 months # O tempo que o trabalho ficará retido
AutoPrune = yes # Prune expired Jobs/Files
}
A linha "File Retention" vai dizer o período de tempo em que os dados gravados serão mantidos na base de dados do catálogo. É importante ressaltar isso, pois somente dentro desse período é que o administrador poderá navegar no banco de dados e fazer a restauração dos arquivos individualmente. E por outro lado tem que se prestar atenção pois quanto maior for o período, maior ficará seu banco de dados, daí a importância da um bom período para a poda desses dados com o "Job Retention".
A "Job Retention" será o tempo em que ele os registros de backup serão mantidos na base de dados. Todos os arquivos salvos estão registrados a algum "job" realizado.
Este não poderá ser apagado nem pelo sistema nem pelo usuário. Isso será o tempo em que o trabalho será apagado do catálogo mas não será apagado os arquivos que foram copiados, neste caso ficarão disponíveis somente os detalhes sobre os trabalhos que derem certo, mas não detalhes dos arquivos que foram copiados. Nesse caso, pra um trabalho de restauração será necessário a restauração de todo o volume criado. A única forma de apagar seria via console pelo comando "Purge".
A linha "AutoPrune" será o tempo mínimo em que o volume será mantido antes de ser reutilizado. Quando esses arquivos são substituídos, os registros antigos no catálogo também são apagados.
Logo após é hora de configurar o "Storage":
Storage {
Name = Storagens01 # Como na sessão "Job"
acima
Address = 192.168.0.2 # Opte pelo IP
SDPort = 9103
Password = "SenhaDoStorage" # Senha e nome gerados no bacula-sd.conf
Device = Pastadearmazenamentons01# Nome do local onde será gravado o backup, verificar em bacula-sd.conf
Media Type = File
E por último chegou a hora de configurar a "pool".
Pool {
Name = Poolns01
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
Maximum Volume Bytes = 100G
Maximum Volumes = 10
LabelFormat = "Sec"
}
Essas opções são essenciais para a reciclagem de volumes antigos e liberando espaço para seus backups. Essas opções são importantes pois irá dizer o tempo em que terá a versão do arquivo mais velha pra restaurar, o tamanho máximo de cada volume e o número máximo de volumes a serem criados. A linha "LabelFormat" é importante pois não é necessário fazer o trabalho de montagem de volumes manualmente. Caso o tempo de retenção seja menor do que o período declarado na sessão cliente, o que terá efeito será a reciclagem.