Olá pessoal, chegamos a nosso terceira e última etapa desta série de artigos. Neste artigo iremos falar de SystemD e Script Shell com o objetivo de finalizarmos nosso backup Automático no Linux. Já aprendemos nos artigos anteriores sobre UDEV e Telegram Bot, agora falta pouco, bora lá.
Considerações
Irei levar em consideração que já tenha lido os artigos anteriores, se caso ainda não leu, segue os links. Da uma conferida depois volte aqui para continuarmos.
1/3 – Backup Automático com Linux – Regras UDEV.
2/3 – Backup Automático com Linux – Notificações Telegram.
1) Criando targets no SystemD.
Em nosso primeiro artigo, vimos como criar regras no UDEV. De ante mão, naquela momento, criamos uma regra que aponta para uma target.service chamada bkpraff.service. Esta target tem por objetivo chamar nosso script de backup assim que o hd-externo é plugado ao repositório Linux.
Obs: Já tratei a criação de targets do SystemD no artigo “Adicionando script na inicialização do Linux com SystemD“, depois da uma conferida.
Vamos então criar uma target chamada bkpraff.service dentro de /etc/systemd/system/ conforme ilustrado abaixo:
vim /etc/systemd/system/bkpraff.service
Adicione o seguinte conteúdo ao arquivo:
[Unit]
Description=Executa o Script de backup assim que for envocado.
[Service]
Type=simple
ExecStart=/bin/sh /etc/scripts/bkp-hd-externo.sh
[Install]
WantedBy=multi-user.target
Salve e saia do arquivo.
Agora vamos adicionar nosso target a inicialização do Linux. Para isso, execute o comando conforme ilustrado abaixo:
systemctl enable bkpraff.service
Pronto nossa target já esta criada e adicionada a inicialização, precisamos agora criar nosso script shell.
2) Script de Backup.
Criei um script básico com intuito de demonstrar a funcionalidade proposta na série de artigos, fique a vontade para fazer melhorias e implementar o script da forma que achar melhor.
#!/bin/bash
#source telegram-notify
PATH=$PATH:/usr/local/sbin
# Pesquisa hd para ver se está conectado.
conectado=`blkid | grep F8DE7ADDDE7A941A`
DATA=`date +%Y-%m-%d`
DATAHORA=`date +%Y-%m-%d-%H.%M`
if [ ! -z "$conectado" ]; then { # Se conectado
# Monta partição utilizando o systemD.
systemctl start mnt-backup.mount
echo "------------------------------------------------------------------------" >> /var/log/backup/bkp-"$DATA".log
echo "Dispositivo UUID=F8DE7ADDDE7A941A montado!" >> /var/log/backup/bkp-"$DATA".log
echo "Backup iniciado em $DATAHORA" >> /var/log/backup/bkp-"$DATA".log
#Informa via Telegram Bot que o disco foi conectado e que o bkp iniciará.
sh -c 'telegram-notify --success --text "O HD-Externo UUID=F8DE7ADDDE7A941A *foi conectado*, iniciando backup..."'
#Realiza sincronia de arquivos com hd externo.
echo "Executando rsync" >> /var/log/backup/bkp-"$DATA".log
rsync -avh /dados/repositorio/ /mnt/backup/srvbkp/repositorio/ >> /var/log/backup/bkp-"$DATA".log
echo "Backup finalizado em $DATAHORA" >> /var/log/backup/bkp-"$DATA".log
echo "------------------------------------------------------------------------" >> /var/log/backup/bkp-"$DATA".log
#Desmonta ponto de montagem.
umount /mnt/backup
sleep 30
#Informa via telagram que o hd pode ser desconectado.
sh -c '/usr/local/sbin/telegram-notify --success --text "*Backup finalizado*, o hd externo pode ser removido..."'
exit 0
} else {
echo "O dispositivo NÃO está disponível para automontagem SystemD" >> /var/log/backup/bkp-"$DATA".log
echo "------------------------------------------------------------------------" >> /var/log/backup/bkp-"$DATA".log
sh -c 'telegram-notify --error --text "O HD-Externo UUID=F8DE7ADDDE7A941A *Não está disponível* para automontagem SystemD, por favor verifique."'
exit 0
} fi
exit 0
Pronto, agora é só espetar o hd-externo no repositório Linux para o script de backup rodar.
CONCLUSÃO
Através deste artigo demostramos como criar uma target do SystemD para rodar um script de backup que tem por objetivo realizar cópias de forma automática utilizando rsync assim que o hd-externo de destino é plugado ao repositório Linux de origem.
Sendo assim chegamos ao fim de nossa série de Backup Automático com Linux, espero que tenha gostado, e que você possa desfrutar da ideia aqui abordada, implementando soluções em outras atividades e rotinas de trabalho.
Se você gostou deste post e através dele pude lhe ajudar, o que acha de aproximarmos nosso contato? Siga meu blog, twitter e me adicione no Linkedin, aproveite para classificar algumas das minhas competências/recomendações, este simples gesto faz toda a diferença.
Att,
Rafael Oliveira
SysAdmin