Plugin BACULA
Publicado por Marcelo Viana (última atualização em 05/11/2012)
[ Hits: 5.415 ]
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 }
Auto-installer ISP Config 3 - FC 11
Script para encontrar arquivos .wam, .mpeg
Detecta e bloqueia tentativa de acesso ao SSH
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Preciso resolver um erro de DPKG (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (2)
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta