Resolvendo problemas com Script de Backup SAMBA-4.

Mais um “Precisei Postei”, agora viabilizando o script de backup incluído  no source do pacote do SAMBA 4.  https://download.samba.org/pub/samba/.

Estou terminando a implantação do Samba 4 em modo Controlador de Dominio seguindo a wiki oficial da comunidade: https://wiki.samba.org. Tirando algumas situações especificas, a wiki contém  informações  suficientes para a instalação e configuração desse pacote.

Uma dessas situações é o script de backup que vêm com o source.Como eu já tenho um script “GERAL” de backup, só queria anexar o script do samba4  ao meu, porém não funcionou.

Meu primeiro problema foi que não instalei o pacote pelo fonte. Na verdade em uma primeira instalação eu fiz pelo fonte, mas como tive problemas com a atualização do winbindd, dei volta na manobra e reinstalei utilizando o binário pelo gerenciador de pacotes.

Uma diferença é que a instalação pelo gerenciador de pacotes não inclui o script de backup do samba 4. Assim sendo, você tem duas opções: Criar sua própria solução de backup(na wiki encontramos algumas observações quanto a isso) ou, como foi meu caso, aproveitar o que já está pronto. Ando sem tempo para ficar inventando a roda.

Então:

Baixei o source da ultima versão do samba:

# wget -qO- https://download.samba.org/pub/samba/samba-latest.tar.gz | tar xvz

Copiei o script de backup para o diretório onde estavam outros  scripts do samba4
# cp  diretório_descomprimido/source4/scripting/bin/samba_backup      /usr/bin/

PROBLEMA:

Após o download e a cópia realizada acima, verifiquei que o script é bem limitado  quando se vai informar quais diretórios que ele vai realizar o backup. No script padrão, só podemos colocar a informação de um diretório de origem dos backups na variável FROMWHERE.(Abaixo na observação, descrevo melhor as variáveis que devem ser editadas.)

Como um dos diretórios de origem do backup /etc/samba(contém configuração do smb.conf e tls) não está no mesmo local dos outros diretórios origem sysvol e private(que contém os arquivos LDP e TDP) , tive problemas com o comando tar que é executado no script de backup do samba. O comando saiu com erro informando reconheceu o diretório etc como estando vazio e interrompeu sua execução.

imagem_erro_tar

Uma maneira simples de resolver esse tipo de problema seria  utilizar um link simbólico apontando para um único diretório, porém, nesse caso teriam que ser realizadas grandes mudanças no script ou retirar sua pouca inteligência. Isso por conta da maneira que o script gera a lista dos diretórios que vão ser backapeados.

Olhando o código do script, verifiquei que muitas alterações poderiam ser feitas, tornando-o mais inteligente e funcional, mas (como já havia mencionado) eu tenho um script de backup “GERAL” e só queria inserir esse do samba4 sem muita analise.

PARA SOLUCIONAR:

fiz uma pequena alteração no script de backup do samba4 a partir da linha 85.

Dentro do condicional if, na parte que verifica se o diretório é igual a “private“, tem uma cláusula else onde adicionei um novo if. Nessa cláusula recém criada, inseri uma condição para o diretório etc (Diretório que estava separado dos outros).

# Run the backup.
# –warning=no-file-ignored set to suppress “socket ignored” messages

if [ “$d” = “etc” ]; then
tar cjf ${WHERE}/${n}.${WHEN}.tar.bz2 “etc” –warning=no-file-ignored
Status=$? # Preserve $? for message, since [ alters it. #(CASO SEJA “o diretorio etc”) 
else
tar cjf ${WHERE}/${n}.${WHEN}.tar.bz2 $relativedirname –warning=no-file-ignored
Status=$?  # Preserve $? for message, since [ alters it (CASO seja outro)
fi

…..

Screenshot de parte do script ORIGINAL:

Alteracao_Script_Backup_samba_Original

Screenshot de parte do script ALTERADO:

Alteracao_Script_Backup_samba_alterado

Basicamente copiei o que já tinha e coloquei uma lógica para caso o diretório fosse igual a “etc”, ele teria que executar o comando tar com o nome etc no lugar da variavel $relativedirname” conforme script original.

Dessa forma o backup funcionou junto com meu script “GERAL”. Agora é só testar e VALIDAR o RESTORE e tá dado o pronto.

Valeu e espero ajudar a outros!!


OBSERVAÇÃO:

Conforme a documentação da wiki oficial do samba4, as alterações nas clausulas FROMWHERE, WHERE e DAYS devem ser feitas no script de backup  conforme suas necessidades e instalação do seu ambiente. https://wiki.samba.org/index.php/Backup_and_restore_an_Samba_AD_DC

FROMWHERE= origem do backup samba(ex:/usr/local/samba)
WHERE= destino do backup samba(ex:/home/backups/)

DAYS= Numero de dias de retenção

Essas são as únicas coisas  que realmente é indicado ser alterado. Outras só se realmente for necessário.


Configuração do sistema utilizado:

Sistema: Linux

Distribuição: Debian Jessie 8.4

REFERENCIAS:

https://wiki.samba.org/index.php/Backup_and_restore_an_Samba_AD_DC

https://wiki.samba.org/index.php/User_Documentation

https://download.samba.org/pub/samba/

 

Ajude a outros..Compartilhe!!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *