terça-feira, 30 de junho de 2015

Bacula Sistema de backup


Introdução
O Bacula

-Ferramenta livre open source de backup (GLP3)
-Clientes-multiplataformas
-C/C++ (Alta prtabilidade)

Obs: Suporta qualquer dispositivos de armazenamento, compilado só para Linux e exite para Linux mas é incompatível.
Linux reconheceu drive de fitas ele trabalha normal nele, Linux em relação drive da um show.

2 software de backup em rede 100% modular
Director- comanda todas operações de backup
Storage daemon- Local onde vou armazenar os arquivos de backup SD
File daemon – instalar nas maquinas que vou fazer o backup FD
Catalog – é o data base do banco de dados
Console- desktop e web

Posso ter diretor em uma maquina, Storage em outra maquina, cliente em outras maquinas e banco em outra maquina, console em outra maquina instalado em sua estação de trabalho ou notebook.
Regras Implicidas: Director deve ter ao menos instalado também um file daemon cliente para ele fazer backup dele mesmo em outra maquina para não correr o risco de perder os dados e catalog.

Portas padrão

Porta diretor: 9101
Clientes :9102
Storage :9103
Cliente diretor para sd Storage Daemon. Vai direto sem passar no diretor.

Um pouco sobre o Bacula:
  • Estrutural cliente Servidor;
  • Estrutural Modular (Diretor , Client, Database ,Console Administração);
  • Compatível com Windows , Linux , Mac e BSD;
  • Farta Documentação disponível na Internet e também aqui mesmo no 'Viva o Linux';
  • Inúmeros canais de suporte (Listas , fóruns , IRC );
  • Permite execuções de scripts , antes/depois do início do job;
  • Suporte à maioria dos dispositivos de Storage do mercado, você mesmo pode realizar montagem;
  • Infinidade de recursos para a customização de backups.
     Bacula suporta linux , UNIX , Windows , e MAC  clientes de backup, e uma variedade de dispositivos de backup profissionais, incluindo biblioteca de fitas . Administradores e operadores podem configurar o sistema através de uma linha de comando ,  ou interface web; seu back-end é um catálogo de informações armazenadas pela MySQL , postgreSQL ou SQLite .

Instalação da console do bacula

Realizando a Instalação do sistema bacula plataforma Debian

Como vamos compilar a última versão do Bacula, vamos instalar o "build-essential": 
# apt-get install build-essential vim 
Agora vamos instalar o MySQL: 
# apt-get install mysql-client mysql-common mysql-server-5.1 mysql-server-core-5.1 libmysqld-dev 


Eu prefiro usar o vim, para edição, usar o insert para digitar o conteudo.
# apt-get install vim 

Baixe a ultima versão do Bacula (nesse caso, é 5.2.6): 

# wget http://downloads.sourceforge.net/project/bacula/bacula/5.2.6/bacula-5.2.6.tar.gz 

- Vamos descompactar e instalar o Bacula 

Para descompactar: 
# tar -zxvf bacula-5.2.6.tar.gz 

Use o comando abaixo, para verificar os parâmetros: 
# ./configure --help 

Como estamos usando o MySQL como banco de dados, vamos usar assim: 
# ./configure --with-mysql
# make
# make install
 

Agora, vamos ajustar o serviço do Bacula. Copie o arquivo: 
# cp -av /etc/bacula/bacula /etc/init.d/ 

E vamos ver se está OK: 
# invoke-rc.d bacula status 
bacula-sd is stopped
bacula-fd is stopped
bacula-dir is stopped
Você pode ainda realziar manualmente como :
/var/init.d service bacula-director restart
Bacula já esta instalado
vamos fazer as configuraçoes necessarias


Configurando o Bacula

Apos a instalação, vamos configurar o Bacula para efetuar nosso 1º Backup.

Vamos ao diretório do Bacula:
# cd /etc/bacula

Vamos criar e ajudar a base de dados. Use os comandos:
# ./create_bacula_database -u root -p
# ./make_bacula_tables -u root -p
# ./grant_bacula_privileges -u root -p


Onde:
  • -u : Informa o usuário do banco;
  • root : É o usuário;
  • -p : É a senha que vai solicitar.
Obs: caso seja necessário sempre usar o -p para você digitar a senha de root.

Agora, vamos ajustar as configurações para o Bacula efetuar o 1º Backup.

Efetue o Backup do arquivo do "bacula-dir.conf":
# cp -av bacula-dir.conf bacula-dir.conf.bkp

Vamos adicionar um Job no "bacula-dir.conf", deixe exatamente assim:
# cat /etc/bacula/bacula-dir.conf 

editando o arquivo de configuração 

Configurando o Bacula

Apos a instalação, vamos configurar o Bacula para efetuar nosso 1º Backup.

Vamos ao diretório do Bacula:

# cd /etc/bacula

Vamos criar e ajudar a base de dados. Use os comandos:

# ./create_bacula_database -u root -p
# ./make_bacula_tables -u root -p
# ./grant_bacula_privileges -u root -p


Onde:
  • -u : Informa o usuário do banco;
  • root : É o usuário;
  • -p : É a senha que vai solicitar.

Agora, vamos ajustar as configurações para o Bacula efetuar o 1º Backup.

Efetue o Backup do arquivo do "bacula-dir.conf":

# cp -av bacula-dir.conf bacula-dir.conf.bkp

Vamos adicionar um Job no "bacula-dir.conf", deixe exatamente assim:

# vim /etc/bacula/bacula-dir.conf 

 Director {
  # Nome do Diretor                   
  Name = bacula-dir
  # Porta padrão
  DIRport = 9101
  # Comando personalizados de consultas               
  QueryFile = "/etc/bacula/query.sql"
  # Diretório de trabalho do bacula
  WorkingDirectory = "/var/bacula/working"
  # Diretório dos processos do Bacula
  PidDirectory = "/var/run"
  # Número Máximo de jobs simultâneos
  Maximum Concurrent Jobs = 3
  # Senha , que também que ser configurado no bconsole.conf
  Password = "SmOarbwn9YUvQY6deguo2I8WH08jQH0eh2PjeC18f/v0"
  # Onde vai as messages genéricas do bacula        
  Messages = Daemon
}
#Include onde fica mais fácil
# um diretorio somente com os conf do clientes do bacula
# como tem vários servidores por questão de organização
#vamos criar uma conf para cada cliente
@|"sh -c 'cat /etc/bacula/clientes/*.conf'"
# Generic catalog service
Catalog {
  Name = MyCatalog
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:mysql"; dbaddress = 127.0.0.1; dbport = 
  dbname = "bacula"; dbuser = "root"; dbpassword = "12345"
}
# Reasonable message delivery -- send most everything to email address
#  and to the console
Messages {
  Name = Standard
  mailcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
  operatorcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
  mail = root@localhost = all, !skipped           
  operator = root@localhost = mount
  console = all, !skipped, !saved
#
  append = "/var/bacula/working/log" = all, !skipped
  catalog = all
}
#
# Message delivery for daemon messages (no job).
Messages {
  Name = Daemon
  mailcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
  mail = root@localhost = all, !skipped           
  console = all, !skipped, !saved
  append = "/var/bacula/working/log" = all, !skipped
}
Console {
  Name = bacula-mon
  Password = "fG0kBPsk3i79XJM4pV2enjGCKZ1wXO7OOXZKNeeseI4k"
  CommandACL = status, .status

 Agora vamos ver o "bacula-sd". Efetue um Backup do arquivo: 

# cp -av bacula-sd.conf bacula-sd.conf.bkp 

Eu criei um diretório chamado "backup", onde vamos jogar os Backup do Bacula: 
# mkdir /backup 

- Como vamos fazer Backup de vários Servidores, iremos criar também, diretórios para cada servidor. Mas, como vamos fazer somente de um Servidor do Bacula, por enquanto vamos criar somente este, e ao longo, vamos criando mais. 

Criando o diretório de Backup do Servidor do Bacula: 
# mkdir /backup/bacula 

E ficou assim: 
#vim /etc/bacula/bacula-sd.conf 

####################################################################################################
Storage {                            
  Name = bacula-sd
  SDPort = 9103                       
  WorkingDirectory = "/var/bacula/working"
  Pid Directory = "/var/run"
  Maximum Concurrent Jobs = 20
}
#
# List Directors who are permitted to contact Storage daemon
#
Director {
  Name = bacula-dir
  Password = "do9uoBD79ZUkx6eAoTLLHSjTzbK5lEq/3lL7BVAXL4Nz"
}
#
# Restricted Director, used by tray-monitor to get the
#   status of the storage daemon
#
Director {
  Name = bacula-mon
  Password = "rP2btPJoYTRns9BiMe98B1v3VMFItKVCkIgxnbN0POCp"
  Monitor = yes
}
Device {
  Name = bacula
  Media Type = File
  Archive Device = /backup/bacula
  LabelMedia = yes;                  
  Random Access = Yes;
  AutomaticMount = yes;              
  RemovableMedia = no;
  AlwaysOpen = no;
}
Messages {
  Name = Standard
  director = bacula-dir = all
}
#########################################################################################################
Vamos informar onde será armazenado os dados.
Agora, vamos configurar o cliente do Bacula para podemos efetuar nosso 1º Backup. 

Efetue o Backup do arquivo: 

# cp -av bacula-fd.conf bacula-fd.conf.bkp 
#vim bacula-fd.conf

########################################################################


Director {

  Name = bacula-dir

  Password = "UfJ+vunYR0QU5mW5KwxYbuUQTl1aUQy49q+y6ih8W1Kw"

}
#
# Restricted Director, used by tray-monitor to get the
#   status of the file daemon
#
Director {
  Name = bacula-mon
  Password = "TPxsyqgOFHaOf1k/yZpUwvSTkuYlOX5mj2FdCbZRwHnq"
  Monitor = yes
}
#
# "Global" File daemon configuration specifications
#
FileDaemon {                          # this is me
  Name = bacula-fd
  FDport = 9102                  # where we listen for the director
  WorkingDirectory = /var/bacula/working
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20
}
# Send all messages except skipped files back to Director
Messages {
  Name = Standard
  director = bacula-dir = all, !skipped, !restored
}
############################################################################################################

O "bacula-dir", "bacula-sd" e o "bacula-fd", estão OK. 



Vamos criar o "conf" do cliente com o JOB, POOL, SCHEDULE. Como usamos o Include no "bacula-dir.conf", onde o caminho é "/etc/bacula/clientes/", vamos criar um arquivo com o nome de "bacula.conf". 


Criando o diretório "clientes": 

# mkdir /etc/bacula/clientes 

Agora, vamos criar o arquivo do "bacula.conf": 

# vim /etc/bacula/clientes/bacula.conf
Neste arquivo vamos criar tudo separado para uma organização dos JOBs,POOL e Agendamento de backups(SCHEDULE)
########################################################################


#JOB

Job {

Name = "Bacula"

Type = Backup
Level = FULL
Client = bacula-fd
FileSet = "Bacula"
Schedule = "Bacula"
Storage = bacula
Messages = Standard
Pool = bacula-diario
Priority = 10
Write Bootstrap = "/var/bacula/bacula.bsr"
}
#JOB RESTORE
Job {
Name = "Bacula-Restore"
Type = Restore
Client=bacula-fd
FileSet="Bacula"
Storage = bacula
Pool = bacula-diario
Messages = Standard
Where = /tmp/bacula-restores
}
# FILE SET
FileSet {
Name = "Bacula"
Include {
Options {
signature = MD5
}
File = /etc
}
}
#CLIENT
Client {
Name = bacula-fd
Address = 192.168.25.18
FDPort = 9102
Catalog = MyCatalog
Password = "UfJ+vunYR0QU5mW5KwxYbuUQTl1aUQy49q+y6ih8W1Kw"
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}
Storage {
Name = bacula
Address = 192.168.25.18
SDPort = 9103
Password = "do9uoBD79ZUkx6eAoTLLHSjTzbK5lEq/3lL7BVAXL4Nz"
Device = bacula
Media Type = File
}
Schedule {
Name = "Bacula"
Run = Full sun-sat at 23:10
}
#POOL
Pool {
Name = bacula-diario
Pool Type = Backup
Recycle = yes
# Bacula can automatically recycle Volumes
AutoPrune = yes
Volume Retention = 365 days
}
############################################################################################################
Agora vamos reiniciar ou iniciar nosso bacula para efetuar o primeiro backup.

# invoke-rc.d bacula start 

Vamos usar o BCONSOLE, um console de gerenciamento do Bacula: 

# bconsole 

Ao acessar o BCONSOLE, o Shell ficará assim: 

######################################################################
Connecting to Director bacula:9101
1000 OK: bacula-dir Version: 5.2.6 (21 February 2012)
Enter a period to cancel a command.
*
#######################################################################


Isso mesmo, com o ' * ' na frente. Usando o comando HELP, você verá as opções. 

Vamos ao que interessa, vamos efetuar o Backup. Mas antes, vamos criar o volume e associar a POOL: 

Use o comando 'add': 

*add 

Enter number of Volumes to create. 0=>fixed name. Max=1000:
coloque 0 ( Zero )

Enter Volume name:

Como estaremos efetuando o Backup do próprio Bacula, então o nome pode ser: bacula 

É só digitar o comando run no terminal e pronto, ele irá efetuar o Backup. 

Como mostra a imagem abaixo:




Próximo post como instalar o webmin com a plataforma o bacula rodando.