quinta-feira, 9 de maio de 2013

Instalação e configuração do Bacula

Nesse tutorial tentarei ensinar a instalação de um servidor Debian com o Bacula, fazendo backup e restore da própria máquina.
Posteriormente mostrarei como configurar os clientes em máquinas, Ubuntu e Windows XP e 7.

Instalação das dependências no Debian:
  • apt-get install build-essential vim
  • apt-get install mysql-client mysql-common mysql-server-5.1 mysql-server-core-5.1 libmysqld-dev
Instalação das dependências no CentOS:
  • yum groupinstall 'Development Tools'
  • yum install mysql mysql-devel mysql-server
Baixe a última versão do Bacula (nesse caso, é 5.2.6):
  • tar -zxvf bacula-5.2.6.tar.gz 
  • ./configure --with-mysql
  • make
  • make install
  • cp /etc/bacula/bacula /etc/init.d
  • invoke-rc.d bacula status
Criando o banco MySQL
  • ./create_bacula_database -u root -p
  • ./make_bacula_tables -u root -p
  • ./grant_bacula_privileges -u root -p
No fim de cada comando você deverá informar a senha de root do servidor MySQL.

Arquivos de configuração do Bacula
  • bacula-dir.conf
  • bacula-sd.conf
  • bacula-fd.conf
Configurando o Client

Director {
  Name = bacula-dir
  Password = "bacula"
}
Director {
  Name = bacula-mon
  Password = "bacula"
  Monitor = yes
}
FileDaemon {
  Name = bacula-fd
  FDport = 9102
  WorkingDirectory = /var/bacula/working
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20
}
Messages {
  Name = Standard
  director = bacula-dir = all, !skipped, !restored
}

Configurando o Storaged

Storage {                            
  Name = bacula-sd
  SDPort = 9103                       
  WorkingDirectory = "/var/bacula/working"
  Pid Directory = "/var/run"
  Maximum Concurrent Jobs = 20
}
Director {
  Name = bacula-dir
  Password = "bacula"
}
Director {
  Name = bacula-mon
  Password = "esmaltec"
  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
}

Configurando o Director

Director {              
  Name = bacula-dir
  DIRport = 9101
  QueryFile = "/etc/bacula/query.sql"
  WorkingDirectory = "/var/bacula/working"
  PidDirectory = "/var/run"
  Maximum Concurrent Jobs = 3
  Password = "bacula"
  Messages = Daemon
}
Catalog {
  Name = MyCatalog
  dbname = "bacula"; dbuser = "root"; dbpassword = "root"
}
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
}
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 = "bacula"
  CommandACL = status, .status
}

Job {
  Name = "Backup"
  Type = Backup
  Level = FULL
  Client = bacula-fd
  FileSet = "bacula"
  Schedule = "bacula"
  Storage = bacula
  Messages = Standard
  Pool = bacula
  Priority = 10
  Write Bootstrap = "/var/bacula/bacula.bsr"
}
Job {
  Name = "Restore"
  Type = Restore
  Client=bacula-fd
  FileSet="bacula"
  Storage = bacula
  Pool = bacula
  Messages = Standard
  Where = /bacula/restore
}

FileSet {
  Name = "bacula"
  Include {
    Options {
      signature = MD5
    }
    File = /etc
    File = /home
  }
}

Client {
  Name = bacula-fd
  Address = 192.168.0.10
  FDPort = 9102
  Catalog = MyCatalog
  Password = "bacula"
  File Retention = 30 days
  Job Retention = 6 months
  AutoPrune = yes
}

Storage {
  Name = bacula
  Address = 192.168.0.5
  SDPort = 9103
  Password = "esmaltec"
  Device = bacula
  Media Type = File
}

Schedule {
  Name = "bacula"
  Run = Full sun-sat at 23:10
}

Pool {
  Name = bacula
  Pool Type = Backup
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 365 days
}

Reinicie o serviço do bacula.

Executando o primeiro backup

Para rodar o backup é necessário criar o pool de onde os dados serão salvos, execute os comandos baixo:
  • bconsole
Você entrar na console de administração do bacula, digite help para visualizar todos os comando que são suportados
  • add
Comando para criar o pool, serão feitas duas perguntas o tamanho e o nome do pool, responda 0 para a primeira pergunta e o nome que desejar para a segunda.
  • run
Comando para rodar o backup, aparecerão duas opções de jobs, pois são as que criamos no director. Escolha a referente ao backup e confirme a execução do backup.

Executando o restore

Entre na console de administração do bacula e execute o comando:
  • restore
A seguinte lista será mostrada:

To select the JobIds, you have the following choices:
     1: List last 20 Jobs run
     2: List Jobs where a given File is saved
     3: Enter list of comma separated JobIds to select
     4: Enter SQL list command
     5: Select the most recent backup for a client
     6: Select backup for a client before a specified time
     7: Enter a list of files to restore
     8: Enter a list of files to restore before a specified time
     9: Find the JobIds of the most recent backup for a client
    10: Find the JobIds for a backup for a client before a specified time
    11: Enter a list of directories to restore for found JobIds
    12: Select full restore to a specified Job date
    13: Cancel

Primeiramente você escolherá a opção de número 1 para ver o JobId dos backup que você acabou de executar. Agora escolha a opção de número 12 e informe o JobId do backup. Isso será mostrado a você:

You are now entering file selection mode where you add (mark) and
remove (unmark) files to be restored. No files are initially added, unless
you used the "all" keyword on the command line.
Enter "done" to leave this mode.

cwd is: /
$

Este é um outro console, nele você pode listar e navegar os diretórios que você foram "backpeados" com os comandos cd, ls, etc. Seu backup contém duas pasta, "etc" e "home", iremos escolher a pasta home para restaurar, o comando para isso é:
  • mark home/
Para finalizar digite:
  • done
Confirme a execução do restore, com isso os dados serão restaurados dentro da pasta que você informou no director.

Essa é a configuração básica para o funcionamento do Bacula.

Nenhum comentário:

Postar um comentário