Plugin BACULA
Publicado por Marcelo Viana (última atualização em 05/11/2012)
[ Hits: 5.702 ]
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
}
Mudar senha de usuário automaticamente
Script contra ataques de Brutal Force por SSH.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (10)
Assisti Avatar 3: Fogo e Cinzas (3)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









