Plugin BACULA
Publicado por Marcelo Viana (última atualização em 05/11/2012)
[ Hits: 5.457 ]
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 }
Gerenciador Simples de Empresa
Criando usuário com poderes de root
"Mascarando" pseudo-senha digitada pelo usuário
Jftp Script - Script para automação de um processo FTP
Ativando o MRTG para Roteadores via SNMP
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Remoção de propaganda com o programa Comskip[AJUDA] (2)
Linux Lite Demorando Muito Para Ligar (0)
PC não liga no filtro de linha (3)