Solução de backup completa Open Source: Bacula Community 9.6.x e Baculum 9.6.x

O Bacula é um software que permite você (ou o administrador de sistema) administrar backup, restauração e verificação dos dados de computadores em uma rede de sistemas mistos.
Por ser tão flexível o Bacula é considerado um framework de backup, podendo ser implementado nas mais diferentes estruturas corporativas.

Funcionalidades:

  • Geração de formato aberto (não proprietário) de gravação (pode ser lido pelo tar e dump do Unix) – adeus ao aprisionamento tecnológico;
  • Armazenamento do seu catálogo em banco de dados padrão SQL: SQLite,PostgreSQL ou MySQL;
  • Suporte a compressão dos backups nos algorítimos livres GZIP e LZO;
  • GPL – sem custos com licenças, conhecimento e possibilidade de customização da ferramenta na versão community.

E de quebra, ainda vamos instalar o Baculum, que é  a Web Gui  (interface gráfica) Oficial do Bacula Community, permitindo que o administrador de backup altere configurações de backup sem precisar editar arquivos texto. Além disso uma API é disponibilizada, facilitando a integração com outros softwares, interfaces e consoles.

Primeiramente me chamo Lenon Corrêa, trabalho em uma empresa de Cloud Computing, a Staybox, fornecemos serviços de hospedagem, máquinas virtuais, backup em nuvem, licenciamento de software e outros do nível (se precisar de algo, me chame kkkk). Já trabalhei com o Rudimar, assim veio a oportunidade deste post. Antes de mais nada, é o 1º post, então deem seus feedbacks sobre o conteúdo e tirem suas dúvidas, criticas construtivas sempre serão aceitas. Sem mais delongas, vamos ao que realmente interessa!

Requisitos:
* Debian 10 (Buster) -> Instalação Limpa

* Tunning Bash -> Bash colorido (Este tique aprendi com o Rudimar kkk)

Instalação

Na primeira etapa, instalamos pacotes necessários para a compilação do Bacula, estas bibliotecas são indispensáveis para o bom funcionamento do software e andamento da instalação.

:: Instalação do banco de dados ::

Os banco de dados homologados pelo Bacula são: PostgreSQL, SQLite e MySQL. Então sinta-se livre para usar qualquer um deles, os passos que se alteram desta instalação são minímos.
Já vi pessoas também instalando com o MariaDB, em suma ele é praticamente igual ao MySQL, então não deve acarretar inconsistências. Mas vamos seguir a risca as recomendações da comunidade e vamos instalar a versão 5.7 Community do MySQL (Também já fui orientado a usar PostgreSQL, pois o desempenho é superior, mas como meu conhecimento é relativamente baixo, prefiro ir de MySQL mesmo, que sei tratar erros, se acontecerem).

Primeiro, adicionamos a chave GPG do MySQL Community, em seguida adicionamos em nossa máquina para reconhecer o reposítório.

Agora, adicionamos os repositórios, em seguida update.

Atualize os repositórios.

Se tudo correu bem até aqui, vamos finalmente aos pacotes do MySQL:

Durante a instalação, o MySQL oferta se você deseja adicionar uma senha ao root para acessar o banco, se sim, insira a senha, caso contrário apenas tecle enter e prossiga.

Agora vamos criar um usuário para o Bacula no banco de dados, entre no banco com o comando a seguir:

Ou, caso você tenha inserido uma senha de root no banco:

Os comandos abaixo são executados dentro do banco de dados, por tanto cuidado. Gere uma hash de senha e faça a alteração na linha 3.
O que estas linhas fazem são, simplesmente adicionar um usuário ao banco e dar os devidos privilégios para que ele possa inserir, deletar e alterar registros das tabelas que criaremos no futuro deste tutorial.

Para as alterações terem eficácia, restarte o serviço SQL.

Nos comandos seguintes, vamos entrar no diretório onde serão compilados os pacotes do Bacula. Na data de hoje 05/06 se encontra na versão 9.6.4, você pode conferir atualizar neste link. Vamos baixar o fonte, descompactá-lo e entrar na pasta seguinte.

Dentro da pasta ‘bacula-9.6.4’, execute o comando abaixo, ele vai configurar algumas diretivas que interferem diretamente na compilação do Bacula, portanto altere usuário e senha do banco de dados, conforme criou anteriormente, em:
–with-db-user=’usuario_do_banco’
–with-db-password=’SENHA_DO_BANCO_AQUI’
–with-hostname=’ip_da_sua_maquina’
Qualquer outra alteração faça com cuidado.

O retorno será conforme na imagem:

Chegamos na compilação dos pacotes, até aqui tudo certo, né?
A seguir, temos os comandos que compilam o Bacula. Rode-os e aguarde!

Os próximos comandos alteram permissão de escrita e leitura da pasta onde fica o Bacula, e após entra na pasta.

Agora vamos criar o banco de dados, tabelas e dar privilégios ao usuário do bacula. (Dependendo como você instalou o banco você usa o ‘-u root -p’ ou não).

Para fazer atualização do bacula você repete o mesmo procedimento da instalação, porém execute:

Feito isso com sucesso, vamos restartar o bacula e checar o status com os comandos.

O retorno dos comandos deverá ser o seguinte:

Agora vamos entrar no console do bacula com o comando:

Se tudo correu bem, receberá o retorno de acordo com a imagem abaixo:

Para sair do console:

:: Instalação do Baculum 9.6.x ::

Antes de instalarmos o baculum, precisamos do Apache e do PHP, usaremos a versão 7.3. A versão recomendada é a 7.2, mas em meus testes a 7.3 funcionou bem, não apresentando falhas, (aqui saí das recomendações kkk), use a versão que desejar.
Entre com os comandos abaixo pra instalar os pacotes citados anteriormente.

Vamos a instalação do Baculum, baixamos a chave e ativamos em nossa máquina.

Agora, adicionamos os repositórios, em seguida update.

Após, vamos verificar uma coisa, se o repositório encontrado foi da versão 9.6.”4″. O retorno deve ser como na imagem na sequência.

Agora sim, finalmente vamos instalar os pacotes do Baculum.

Durante a instalação, vamos receber o questionamento como na imagem abaixo. Selecione “manter a versão local atualmente instalada”.

Aqui damos algumas permissões necessárias para que o Baculum consiga rodar comando em nosso bconsole.

Adicionamos o bacula ao grupo do apache e mudamos as permissões da pasta onde fica.
Necessário para que o baculum consiga editar arquivos da pasta.

Aqui ativamos o modo rewrite do apache, as interfaces do baculum e da api. Em seguida restartamos o apache.

Agora vamos a parte Web, acesse o ip da máquina e a porta 9096, no meu caso 10.246.247.90:9096, faça login com usuário: admin. Senha: admin. E chegará na tela a seguir, selecione o idioma e avance, aqui nesta parte é tudo muito intuítivo.

Selecione Sim, e insira a senha do dados do banco de dados (usuário bacula), Endereço IP informe 127.0.0.1, Teste e Prossiga.

Selecione sim e marque a opção “Obter configuração do sudo” teste e avance.

Selecione sim. Em “Diretório de trabalho do Baculum para a configuração do Bacula” insira “/etc/bacula/working“, marque “Obter configuração do sudo” teste as configurações e avance para a etapa seguinte.

Selecione Sim, marque a opção “Obter configuração do sudo” e prossiga.

Crie um usuário para acessar a interface da API, avance.

Aqui você vera uma revisão das configurações criadas anteriomente, ao avançar esta etapa o login será solicitado. Realize-o com as credenciais criadas.

Eu optei por criar um usuário específico para usar a API. Clique em “Listar usuários HTTP Básico” e em “Novo usuário HTTP Básico”, informe os dados e clique em adicionar, conforme abaixo.

Acesse seus IP na na porta 9095, para finalmente configurarmos o Baculum. (Entre com admin/admin).

Selecione o idioma e avance.

Insira as credenciais criadas antes (no meu ex eu criei um usuário api), para que o baculum acesse a API, clique em testar e avance.

Ajuste o usuário para acessar o Baculum nesta etapa e prossiga.

Novamente uma revisão das informações, clique em “Salvar”.

E pronto, chegamos ao fim. Bacula com interface gráfica prontinho para uso.

Vamos conferir se o endereço IP (Address) está o IP de localhost, a alteraremos para o IP da interface do servidor.

Localize Storage {} e confira o parâmetro ‘Address’, altere o IP de localhost 127.0.0.1 para o IP da interface de rede da sua maquina. Se esses endereços ficarem incorretos, o bacula até consegue conversar com nosso cliente, porém nosso cliente não sabe para onde deve enviar os backup’s (a explicação é um pouco mais longa que isso, mas brevemente é o que acontece).

Feito essa alteração, vamos conferir, não é mesmo?

Dentro do console, você pode verificar um cliente (deixarei o exemplo já já):

Agora você pode gerar seus backups de máquinas Linux, Windows, Banco de dados… As possibilidades são infinitas. Crie suas rotinas, escolha do que fazer backup e faça seus testes. PS: Ainda pode ser necessário atualizar algumas diretivas direto no terminal, nos arquivos de configuração, portanto recomendo que leia a documentação, neste link.

:: Extras – Add um cliente::

Aqui vou deixar ainda, um exemplo de configuração de um cliente Linux, para que você não fique tão perdido assim em meio a tanta informação.

:: No lado do cliente ::

Para isso instale bacula-fd

Ajuste as configurações em /etc/bacula/bacula-fd.conf

O campo ‘Name’, em Director é o nome do nosso servidor, por padrão ele vem com ‘bacula-dir‘, e em nosso servidor criamos assim então não precisamos alterar, o campo ‘Password’ é a senha que o Bacula usará para se conectar em nossa máquina (precisaremos dela adiante). Em ‘FileDaemon’ vamos pegar o ‘Name’, que vamos usar para criar nosso cliente na interface gráfica. Basicamente isso, existem outros parâmetros que podem ser usados, para ver quais são consulte a documentação, mas com essas informações básicas já faremos um backup funcionar!

Restarte o bacula-fd

:: No lado do servidor ::

Agora voltamos ao Baculum, IP:9095.
Na sidebar da esquerda clique em ‘Clientes”, em seguida na tela que vai aparecer, clique em ‘Adicionar cliente’.

Agora vamos adicionar nosso 1º cliente de backup. Entre com as informações, ‘Name’ insira o nome que estava na aba ‘FileDaemon’ de nosso cliente, ‘Address’ é o IP da máquina do cliente, ‘Password’ é a senha, que também estava no cliente (como falei antes). Em ‘Catalog’ selecione ‘MyCatalog’, clique em ‘Criar’, um pop-up se abrirá indicando sucesso na adição do cliente, clique em ‘Ok’.

Agora, clique na flecha azul, ao lado do cliente que adicionamos e em seguida clique em ‘Detalhar’.

Nesta aba, clique ‘Status do cliente’, e rapidamente será feita uma captura de informações sobre nosso cliente de backup. Tudo pronto para o backup.

Confira também o GitHub do Wanderlei Huttel, a base deste tuto veio de lá, e também tem muito material complementar lá, como scripts de envio de dados para o Telegram e muito mais. Não trataremos aqui pra não ficar muito extenso.

Acompanhe a comunidade do Bacula no Telegram neste link, boa parte das suas dúvidas outras pessoas já tiveram, então é só pesquisar no grupo.

Se tiver qualquer pergunta deixe nos comentários. Espero que tenha ajudado você, qualquer dúvida você me encontra la no grupo https://t.me/remontticombr 🙂
Abraço!

Autor: Lenon Correa https://t.me/lenon_correa

Fontes:

http://softwarelivre.org/heitorfaria/blog/baculum-9-configuracao-grafica-do-bacula-administracao-e-api
https://github.com/wanderleihuttel/bacula-utils/blob/master/tutorial/bacula_install_debian10.txt
https://github.com/wanderleihuttel/bacula-utils/blob/master/tutorial/baculum_install_debian9.sh

O que é o Bacula?

Página Inicial

Você pode gostar...

18 Resultados

  1. luis disse:

    root@bacula:~# apt update
    Obter:1 http://repo.mysql.com/apt/debian buster InRelease [22,1 kB]
    Err:1 http://repo.mysql.com/apt/debian buster InRelease
    As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY 467B942D3A79BD29
    Atingido:2 http://security.debian.org/debian-security buster/updates InRelease
    Atingido:3 http://deb.debian.org/debian buster InRelease
    Atingido:4 http://deb.debian.org/debian buster-updates InRelease
    Lendo listas de pacotes… Pronto
    W: Erro GPG: http://repo.mysql.com/apt/debian buster InRelease: As assinaturas a seguir não puderam ser verificadas devido à chave pública não estar disponível: NO_PUBKEY 467B942D3A79BD29
    E: The repository ‘http://repo.mysql.com/apt/debian buster InRelease’ is not signed.
    N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
    N: See apt-secure(8) manpage for repository creation and user configuration details.
    root@bacula:~#

    Após inserir o repositório e fazer o apt update ocorre as sguintes mensagens
    e não consigo dar continuidade na instalação do mysql acredito por falta das dependencias.
    versão do meu debian : 4.19.0-23-686-pae #1 SMP Debian 4.19.269-1 (2022-12-20) i686 GNU/Linux

  2. Lucas Moreno disse:

    Boa tarde amigos! Primeiramente parabéns ao Lenon pelo excelente tutorial. Consegui fazer todo o procedimento porem após certo tempo a pagina do Baculum “cai” e retornar o seguinte erro:
    Esta página não está funcionando
    Redirecionamento em excesso por 192.168.-.—
    Tente limpar os cookies.
    ERR_TOO_MANY_REDIRECTS
    Fiz uns 2 backups menores de teste e deu tudo certo. Mas ao fazer um maior após um tempo a pagina cai e só volta após reiniciar o meu servidor de backup. Desde já agradeço a ajuda de todos.

  3. Bruno disse:

    Top demais, parabéns

  4. Carlos Cezar Scalco disse:

    Tutorial show. Estou com o mesmo problema do Cleiton.

    Mensagem: Internal error. Component property ‘PoolRecord.maxpoolbytes’ is not defined.
    As vezes aparecem outros, mas esse é o mais incomodo.

    • Ivan Tavares disse:

      Boa tarde,

      também estou com um problema semelhante, ocorre naquela parte onde testamos a API, o erro é o seguinte

      “output”: “Internal error. Component property ‘JobRecord.priorjob’ is not defined.”,
      “error”: 1000

      Print do erro: https://i.imgur.com/NU3cExG.png

      • Carlos Cezar Scalco disse:

        Depois de sofrer achei a solução meio sem querer para esses dois problemas.

        cd /usr/share/baculum/htdocs/protected/API/Class/
        vi JobRecord.php

        insira public $priojob;
        salve

        vi PoolRecord.php
        insira public $maxpoolbytes;
        salve

        Infelizmente outros defeitos ainda acontecem, devido a meu pouco conhecimento em php e linux, tô apanhando.
        Deus os abençoe

        • Marcelo Salles disse:

          Carlos, sobre tua dica: no public $projob; dentro do JobRecord.php o certo é public @priorjob;

          Fis os testes aqui seguindo a tua dica, e resolveu colocando o “r” que faltava.

          Abraços!

          • Carlos Cezar Scalco disse:

            Desculpe, faltou o R, já era um pouco tarde e a visão já tava turva. kkkkk Descobri novas versões onde aparentemente esses erros foram corrigidos, porém atualizar deu muito trabalho. Funcionou mas foram necessários vários ajustes, tanto que irei testar instalação “limpa” para facilitar manutenções futuras.
            Deus o abençoe.

        • Jose Edimar disse:

          Esta solução funciona, vc apenas cometeu um pequeno erro de digitação. Segue a solução que funcionou no meu caso:

          insira public $priorjob; e não “public $priojob;”

        • Hesley Magno disse:

          Valeu!!! Estava com o mesmo problema.

          Resolvido aqui!!!

          Obrigado!

        • Cristhian Lopez disse:

          Saudações a todos, no meu caso também apresentou erro 1000 no PoolRecord e JobRecord, a solução fornecida pelo Carlos Cezar é a correta, depois de fazer as alterações as mensagens de erro desapareceram.

          Saudações da Nicarágua

  5. Cleiton Peres disse:

    Está gerando esse erro para mim, sabe o que poderia ser ?
    Código do erro: 1000

    Mensagem: Internal error. Component property ‘PoolRecord.maxpoolbytes’ is not defined.

    Segui o tutorial certinho.

  6. Ricardo Souza disse:

    Amigão, instalo o bacula porém quando digito bconsole não conecta. vi que esta tentando conectar na porta 9101, liberei essa porta e mesmo assim não vai. Você precisou liberar alguma coisa no firewall ?

  7. Naelson j da Silva disse:

    Excelente conteudo, parabens !!!

  8. Cara, muito bom seu tutorial, era exatamente oque eu estava precisando!

  9. caraka amigo, eu amo voces, kkkkkkkk cara voces ajudam muito voces nao tem noção, eu só tenho a agradecer voces pelo compartilhamento de conhecimento pela ajuda que tem dado a cada profissional que busca conhecimento e assim ajudar a empresa onde trabalha e por ai vai. pessoal obrigadoo mesmo fica aqui o meu abraço e um GRANDE MUITO OBRIGADO.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *