Plugin BACULA
Publicado por Marcelo Viana (última atualização em 05/11/2012)
[ Hits: 5.426 ]
Homepage: infSite.org
INTRODUÇÃO:
Pequena contribuição de três scripts para auxiliar de forma organizada e fácil na CRIAÇÃO e REMOÇÃO de CLIENTES para o SERVIDOR de backup BACULA.
SCRIPT 1:
criar_cliente.sh: este script gera um novo cliente ou gera e instala se usado com a opção "--instalar".
Ao executar, serão solicitadas informações do novo cliente como: nome, IP do cliente, IP do storage e o diretório do cliente que será backupeado. Após, serão criados dois arquivos .conf, um com a configuração padrão do cliente e outro com a configuração de storage.
Obs.: Os arquivos .conf gerados só serão vistos se a opção "--instalar" NÃO for usada. Se a opção "--instalar" for usada, os arquivos serão movidos para os respectivos diretórios.
Obs. 2: Caso um cliente seja instalado mais de uma vez (duplicando do nome) com mesmo nome, um erro será exibido ao reiniciar o Bacula. Se isso acontecer, basta executar o script "remover_cliente.sh" para limpar a duplicação.
Sintaxe:
# sh criar_cliente.sh (somente gera)
# sh criar_cliente.sh --instalar (gera e instala)
SCRIPT 2:
instalar_cliente.sh: somente instala (move para os devidos diretórios) os arquivos gerados pelo script "criar_cliente.sh".
Sintaxe:
# sh instalar_cliente.sh:
SCRIPT 3:
remover_cliente.sh: remove um ou mais clientes criado pelos scripts.
Sintaxe:
# sh remover_cliente.sh (mostrará opções para exclusão de clientes).
ESTRUTURA DE DIRETÓRIOS PADRÃO:
1 - /etc/bacula
2 - /etc/bacula/criar_cliente/
3 - /etc/bacula/clientes/
4 - /etc/bacula/storage_clientes/
5 - /etc/bacula/clientes.conf
6 - /etc/bacula/clientes_storage.conf
1 - bacula: /etc/bacula/ (padrão da instalação)
2 - criar_cliente: /etc/bacula/criar_cliente/ (local home dos scripts)
3 - clientes: /etc/bacula/clientes/ (local dos arquivos .conf com a configuração de cada novo cliente gerado pelo script)
4 - storage_clientes: /etc/bacula/storage_clientes/ (local dos arquivos .conf com as informações de onde será armazenado o backup de cada cliente).
5 - clientes.conf: /etc/bacula/clientes.conf (é a ligação entre o Bacula e os scripts)
6 - clientes_storage.conf: /etc/bacula/clientes_storage.conf (indica o diretório de armazenamento de cada cliente)
Aviso: Os scripts correspondem ao diretório de instalação padrão do Bacula, caso sua instalação seja diferente, deve alterar o valor das variáveis contida no cabeçalho de cada script, indicando o diretório correto da instalação.
ADICIONANDO O PLUGIN AO BACULA
Para instalar:
# sh INSTALAR_PLUGIN.sh
Obs.: Caso execute mais de uma vez a instalação do plugin, ligações duplicadas serão criadas causando erro na inicialização do Bacula. Se isso ocorrer, simplesmente execute o script abaixo para limpar as ligações, então volte e execute novamente o instalador.
Para remover:
# sh REMOVER_PLUGIN.sh
Obs.: A remoção não apaga arquivos, somente desfaz a ligação.
Nota:
- Os scripts usam dois arquivos modelo para gerar os novos clientes.
- Antes da utilização é necessário que o arquivo "nome_storage.conf" que fica em "/etc/bacula/criar_cliente/modelo/" seja alterado com o diretório de backup de sua preferência, acrescentando no final do diretório a palavra chave "nome", veja a seguir:
# vim /etc/bacula/criar_cliente/modelo/nome_storage.conf
Arhive Device = /MEU_DIRETORIO_DE_BACKUP/nome
Obs.: Repare que no final do diretório acima há a palavra chave "nome", ela é extremamente fundamental para a criação das pastas e arquivos de backup dos clientes.
Feito isso, entre no diretório "/etc/bacula/criar_cliente" e faça os testes.
# cd /etc/bacula/criar_cliente
Gerar:
# sh criar_cliente.sh
ou
Gerar e instalar:
# sh criar_cliente.sh --instalar
Instalar:
# sh instalar_cliente.sh
Remover:
# sh remover_cliente.sh
Espero de verdade que isso seja útil, nem que seja só para terem novas idéias.
Paz e bem, fiquem com Deus.
##SCRIPT 1(CRIAR_CLIENTE.SH): #!/bin/bash parametro=$1 home=/etc/bacula/criar_cliente bkp_home=/MEU_DIRETORIO_DE_BACKUP/ clientes=/etc/bacula/clientes clientes_storage=/etc/bacula/storage_clientes storage=_storage.conf cd $home gerar (){ echo "Nome do novo cliente:" read novo_nome echo "IP do novo cliente:" read ip echo "IP do storage (normalmente o IP do Bacula):" read novo_ip_storage echo "Senha do diretor - bacula-dir):" read senha echo "Diretorio do cliente a ser backupeado" echo "Exemplos:" echo "Para Windows: C:\\\\\\\\/pasta\\\\\\\/bkp" echo "Para Linux: \\\\\\\\/home\\\\\\\\/user" read caminho cp $home/modelo/nome.conf $novo_nome.conf cp $home/modelo/nome_storage.conf $novo_nome$storage grep -l nome $novo_nome* | xargs sed -i s/nome/$novo_nome/g grep -l ip $novo_nome* | xargs sed -i s/ip/$ip/g grep -l endereco_storage $novo_nome.conf | xargs sed -i s/endereco_storage/$novo_ip_storage/g grep -l 123456 $novo_nome* | xargs sed -i s/123456/$senha/g grep -l caminho $novo_nome* | xargs sed -i s/caminho/$caminho/g if [ $parametro = 0 ]; then instalar else echo "{FONTE}33[32;1m Cliente $novo_nome gerado! {FONTE}33[m" echo "Use o script 'instalar_cliente.sh' para completar a operacao" fi } instalar (){ mkdir $bkp_home/$novo_nome > /etc/null cp $novo_nome.conf $clientes/ cp $novo_nome$storage $clientes_storage/ echo "@$clientes/$novo_nome.conf" >> $home/../clientes.conf echo "@$clientes_storage/$novo_nome$storage" >> $home/../clientes_storage.conf echo "{FONTE}33[32;1m Cliente $novo_nome gerado e instalado! {FONTE}33[m" echo "Reinicie o bacula." rm $home/*.conf exit } if [ -z $parametro ]; then parametro=1 gerar else if [ $parametro = "--instalar" ]; then parametro=0 gerar else echo "O parametro correto é: --instalar" fi fi # É o Senhor que mostra os caminhos. ##SCRIPT 2 (INSTALAR_CLIENTE.SH): #!/bin/bash home=/etc/bacula/criar_cliente bkp_home=/MEU_DIRETORIO_DE_BACKUP/ clientes=/etc/bacula/clientes clientes_storage=/etc/bacula/storage_clientes storage=_storage.conf conf=.conf echo "Nome do cliente:" read novo_nome if [ -e $novo_nome$conf ]; then mkdir $bkp_home/$novo_nome > /etc/null cp $novo_nome$conf $clientes/ cp $novo_nome$storage $clientes_storage/ echo "@$clientes/$novo_nome$conf" >> $home/../clientes.conf echo "@$clientes_storage/$novo_nome$storage" >> $home/../clientes_storage.conf echo "{FONTE}33[32;1m Cliente $novo_nome instalado! {FONTE}33[m" echo "Reinicie o bacula." rm $home/*.conf exit else echo "{FONTE}33[31;1m Cliente $novo_nome nao encontrado! {FONTE}33[m" fi # É o Senhor que mostra os caminhos. ##SCRIPT 3 (REMOVER_CLIENTE.SH): #!/bin/bash home=/etc/bacula/criar_cliente bkp_home=/MEU_DIRETORIO_DE_BACKUP clientes=/etc/bacula clientes_storage=/etc/bacula/storage_clientes storage=_storage.conf opc=d listar (){ echo "Listando clientes..." sleep 3 leitura } leitura (){ grep -n $ $clientes/clientes.conf echo "Digite o numero do cliente que deseja remover:(ctrl+c para sair)" read num remover } remover (){ linhas=`grep -cv $= $clientes/clientes.conf` if [ $num -le $linhas ]; then num1=$num$opc sed -i $num1 $clientes/clientes.conf sed -i $num1 $clientes/clientes_storage.conf echo '{FONTE}33[32;1m Cliente removido! {FONTE}33[m' listar else echo '{FONTE}33[31;1m Numero ivalido! {FONTE}33[m' listar fi } listar # É o Senhor que mostra os caminhos. ## OS ARQUIVOS MODELO: ##Modelo1 “nome_storage.conf”: Device { Name = nome_storage_files Media Type = File Archive Device = /MEU_DIRETORIO_DE_BACKUP/nome LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = yes; } ##Modelo2 “nome.conf”: Job { Name = "nome" Type = Backup Level = Incremental Client = nome-fd FileSet = "nome_fileset" Schedule = "WeeklyCycle" Storage = nome_storage Messages = Standard Pool = File Priority = 10 Write Bootstrap = "/var/bacula/working/%c.bsr" } FileSet { Name = "nome_fileset" Include { Options { signature = MD5 } File = "caminho" } Exclude { File = .tmp } } Client { Name = nome-fd Address = ip FDPort = 9102 Catalog = MyCatalog Password = "123456" File Retention = 30 days Job Retention = 6 months AutoPrune = yes } Storage { Name = nome_storage Address = endereco_storage SDPort = 9103 Password = "123456" Device = nome_storage_files Media Type = File }
Firewall do mikrotik, limitando icmp (ping)
Configurando IPTABLES de forma simples
tuiteroPreguicoso1.0 - automatiza o envio de mensagens ao Twitter
Ver último twitter pelo terminal ou na barra de notificação
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (7)