Plugin BACULA
Publicado por Marcelo Viana (última atualização em 05/11/2012)
[ Hits: 5.635 ]
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
}
Transforme a manpage e infopage em pdf e texto
Update no-ip utilizando Shell Script
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (19)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









