Backup com Bacula

Vamos começar uma série de Posts sobre Backup com Bacula, que muita gente ainda tem dúvida, criada por nosso amigo Rodrigo Ramos. Ele tem usado muito a ferramenta em sua empresa e resolveu compartilhar conosco seu conhecimento adquirido.

Bacula é uma excelente ferramenta livre (licença GPL) de backup em rede. Roda em estrutura cliente/servidor, possui estrutura modular independente( todos os componentes ou módulos, podem sem instalados em locais separados, inclusive em S.O.s diferentes), possui suporte a maioria dos dispositivos storages do mercado, possui baixo requisito de hardware, 100% compatível com esquema GFS, dentre outras vantagens tornando-o uma poderosa e robusta ferramenta para backup em rede.

Descrição do Bacula segundo a Wikipedia:

Bacula é um software de backup de código aberto. Com ele é possível fazer backup remotamente de Linux, Solaris, FreeBSD, NetBSD, Windows, Mac OS X, OpenBSD, HP-UX, Tru64, AIX e IRIX.
No Brasil, o Bacula tem despertado o interesse de diversas grandes empresas, como o SERPRO, que já utiliza a ferramenta, de acordo com o alinhamento estratégico pela utilização de Software Livre.
Principais Características
– Estrutura cliente/servidor (permitindo backup centralizado em uma máquina, por exemplo)
– Estrutura modula independente (director, client, database, administration console).
– GPL – economia de custos com licenças, conhecimento e possibilidade de customizção da ferramenta.
– Inúmeros canais de suportes pela comunidade (mailing lists, foruns, IRC channel, etc.)
– Farta documentação disponível na Internet.
– Portabilidade (módulos para diferentes sistemas operacionais – Windows, Linux, MAC, etc. – são compatíveis).
– Infinidade de recursos para a customização de backups.
– Funcionalidade que permite a execução de scripts (ou executáveis) antes/depois do início de jobs (backup/restore), tanto no cliente quanto servidor Bacula.
– Existência de ferramenta de operação via linha de comando ou GUI (inclusive, com diferentes interfaces web desenvolvidas pela comunidades. Destaque: bacula-web – ferramenta de visibilidade gerencial, com gráficos, etc)
– Suporte a maioria dos dispositivos de storage do mercado (inclusive mídias ópticas).
– Funcionalidade customizável para o envio de mensagens de log dos trabalhos de backup/restore ou ainda instruções para o operador de backup (diferentes perfis).
– 100% compatível com o esquema GFS.
– Única ferramenta de backup multi-banco-de-dados.

Mas chega de papo e vamos dar inicio a instalação do bacula por compilação de pacotes para termos independência de versão do Linux.

Entre no diretório onde vai baixar o o código fonte:
root# cd /usr/src

Crie o diretório pra baixar o código fonte e faça o download do mesmo:
root# mkdir install
root# cd install/
root# wget http://sourceforge.net/projects/bacula/files/latest/download?source=files

Descompacte e entre no diretório:
root# tar –xzvf bacula-5.2.2.tar.gz
root# cd bacula-5.2.2

Instale as dependências do Banco de dados para poder compilar o Bacula:
root# yum install mysql-server mysql-devel mysql

Pode ser necessário instalar os pacotes gcc-c++ e gcc, se for o caso é so digitar: yum install gcc-c++ gcc

Vamos configurar o código fonte com o suporte ao banco e compilá-lo:
root# ./configure –with-mysql
root# make
root# make install

Entramos no diretório criado depois da instalação:
root# cd /etc/bacula

O Bacula possui um script para iniciar todos os módulos de forma e ordem correta:

root# ./bacula start

Se estiver tudo certo voce verá a seguinte mensagem:

Agora só resta configurar o MySQL, o que é tarefa fácil, já que o bacula tem pronto todos os scripts para criação do banco:

root# service mysqld start

Cria o banco de dados Bacula:
root# /etc/bacula/create_mysql_database

Cria as tabelas do banco:
root# /etc/bacula/make_mysql_tables

Cria o usuário bacula e define os privilégios:
root# /etc/bacula/grant_mysql_privileges

Obs.: todos os scripts podem ser passar usuário e senha do banco caso necessário (ex: create_mysql_database -u root -psuasenha)

Para instalar somente o client, voltamos a pasta que descompactamos o código fonte:
root# cd /usr/src/install/bacula-5.2.2
root# ./configure –enable-client-only
root# make
root# make install

Já temos o nosso bacula instalado, nos próximos posts vou ensinar a configurar os dispositivos do Bacula.

Bio: Analista de Suporte, curioso e apaixonado pela profissão. Estou descobrindo o universo livre e cada dia ficando mais envolvido. Nas horas vagas fico brincando de levantar VMs para testar novos programas sempre em CentOS.

PS: Além de bom amigo e um aluno sempre disposto a aprender.

Espero que tenha ajudado nas dúvidas iniciais e que junto com os próximos artigos que o Rodrigo fará possa fazer com que Backup não seja mais um problema. Não esqueçam de assinar nosso Portal e divulgar para que possamos crescer cada vez mais.

  • É um enorme prazer colaborar com o CooperaTI, um site que tem me ajudando muito no dia a dia como Analista de Suporte.
    Já esta no forno o próximo post e logo envio explicando todos os componentes do Bacula e suas configurações.

    Um grande abraço a todos.

    • Ótimo artigo Rodrigo, meus parabéns.

      Agora esperamos os próximos.

      Abraços.

    • Rodrigo,

      Nota 10 o post, parabéns! Aguardo ansiosamente o próximo.

      Abraços

  • Thiago Marques

    Ótimo post Rodrigo.
    Abraço!

  • Diego B

    E ae Rodrigo!

    Legal o Post.

    Me tire uma dúvida: o Bacula faz backup para discos locais e para discos externos, ou somente unidades de Fita?

    • Ola Diego,
      Faz backup para discos locais e externos sim, eu particularmente acho mais pratico pq não tem interversão humana e deixa o processo mais automatizado para quem não tem robô de fita.
      Mas pense em redundância e contingencia, nunca deixe seu backup em um único lugar e tenha um espelhamento desse disco para caso de falha do HD. Um dica simples e legal é um rotina GFS em disco e uma segunda rotina periódica em storage online por exemplo.

      Qualquer duvida pode perguntar.
      Abraços.

  • Wilson Alonso

    Olá Rodrigo Ramos, parabéns pelos esclarecimentos e aguardo os complementos.

    Tire uma dúvida o Bácula faz o bkp de banco de dados SQL? se fizer tem alguma rotina que configura tipos como incremental e etc… Se estou falando besteira desculpa pois é uma dúvida que tive agora pensando no meu ambiente de trabalho, onde tenho uma unidade de fita que tem um software de backup o Symantec Backup Exec, o que acho complicado e o custo é alto pelas licenças.

    Abraço pra ti e o grande incentivador Professor Vagner Fonseca.

    • Bom dia Wilson,

      O Bacula faz sim backup de banco de dados, porem a maneira de fazer backup varia de acordo com o SGBD, no MS SQL Server podemos agendar a rotina diretamente pelo bacula-dir e fazer com que somente copie essa pasta, ou podemos realizar dumps através de scripts executados pelo Bacula: Criamos um arquivo.bat no windows com o seguinte comando por exemplo

      C:\Program Files\Microsoft SQL Server\90\Tools\Binn\osql.exe” -E -Q “BACKUP DATABASE mydatabase TO DISK=’C:\bkp\mssql.bak’ WITH FORMAT”

      E dentro do bacula-dir.conf no parâmetro job


      Job {

      ClientRunBeforeJob = C:/arquivo.bat

      Fail Job On Error = Yes

      }

      Quanto ao script .bat alguns links podem te ajudar a entender melhor:

      http://msdn.microsoft.com/en-us/library/aa225964%28SQL.80%29.aspx

      Ja para agendar o backup direto pelo SQL Server e somente copiar a pasta com bacula sugiro esse link:
      http://technet.microsoft.com/pt-br/library/cc966495%28en-us%29.aspx

      Dica: no caso do SQL Server, BD2 e Oracle, o mais fácil é usar o agendamento do próprio SGBD e fazer o backup por lá, e usar o Bacula para copiar essas arquivos.

  • W.Braga

    Simplesmente maravilhoso tutorial e orientação sobre o Bacula.
    O site também esta muito maneiro, continuem assim que o sucesso sera a a consequência do trabalho de vocês!
    Abraco!

    • Wagner,

      Obrigado pelo incentivo, e continuaremos sim.

      Abraço.

  • Belo tutorial, só tenho uma duvida: Você disse que testa programas sempre em CentOS e imagino que isso se extenda a esse tutorial em questão, e sendo o ClearOS baseado no CentOS o senhor saberia dizer se esse tutorial tambem se aplicaria ao ClearOS?

    • Ola Luis, não conheço essa dist, mas se tiver o YUM e os mesmo repositórios, não vejo problemas, mesmo não tendo, é so procurar os pacotes equivalentes.
      Já instalar o Bacula, não vai ter problema já que é compilado.
      Qualquer problema durante a instalação posta aqui que eu te ajudo.

  • Andre Fragoso

    Maravilhoso, excelente, aguardando a continuação… Obrigado Wagner Fonseca

  • Welison Eduardo

    Bom dia, Vagner Fonseca!

    Ao tentar executar o passo “/etc/bacula/create_mysql_database”, não funcionou apresentou a mensagem “ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)”
    O que quer dizer essa mensagem?

    • Welison,
      Tente utilizar com o usuário root do banco e com a respectiva senha.

      # /etc/bacula/create_mysql_database -u root -psuasenha

      Me parece que a informação é de password negado.

  • Pablo

    Boa noite a todos da CooperaTI. Eu me chamo Pablo e sou estudante de sistema de informação, primeiro semestre.
    Foi passado um trabalho sobre a ferramenta bácula, porém está difícil achar algumas informações que o trabalho exige. Preciso saber os pontos positivos e negativos da ferramenta se vocês puderem me ajudar eu agradeço desde já. ~