Hoje de manha recebi um e-mail de uma amiga da MBA e percebi que ainda não havia postado aqui um script para backup de servidores Linux em um compartilhamento Windows.
Então, segue o script comentado:
- Crie um diretório backup dentro de /opt
# mkdir /opt/backup - Crie o arquivo bkp_files.list dentro do diretório backup
# vi /opt/backup/bkp_files.list - Coloque o caminho de todos os diretórios que você quer realizar o backup
/usr/local/
/var
/etc - Saia salvando e crie um arquivo bkp_files.sh dentro do diretório /opt/backup
# vi /opt/backup/bkp_files.list - Coloque o script a seguir dentro do arquivo, modificando de acordo com a sua necessidade (aconselho a baixar o arquivo clicando aqui)
# Destinatario para enviar e-mail com o relatorio do backup#!/bin/sh
# Backup Linux v1.3
# Autor: Vinicius Santoro
# Site: http://www.viniciussantoro.com.br
ADMIN=contato@viniciussantoro.com.br# Nome do servidor a ser feito o backup
SERVER=SERVERVN01# Arquivo com a lista de diretorios para realizar o backup
LIST=$(cat /opt/backup/bkp_files.list | grep ^\/ | sort | uniq)# Log do backup
LOG=/var/log/backup.log# Pega data atual
DATE=`date +%d-%m-%Y-%a`# Monta uma unidade Windows para enviar o backup
tomount() {
mount -t cifs -o “username=DVN\backup,password=backup” “//SERVERVN02/bkplinux$” /mnt/SERVERVN02
if [[ $? -eq 0 ]]; then
echo “Partition /mnt/SERVERVN02 has been mounted sussesfully” >> $LOG
backup
erase
else
echo “An error occurred while mounting the Partition /mnt/SERVERVN02” >> $LOG
echo “————- Finishing Backup date `date +%d/%m/%Y” “%H:%M` ————-” >> $LOG
exit 1
fi
}# Funcao que dispara o e-mail com o log
send_mail () {
/usr/sbin/sendmail $ADMIN << FIMEMAIL
Subject: Backup $SERVER $(date +%d-%m-%Y)
Backup realizado no arquivo: /mnt/SERVERVN02/$SERVER-$DATE.tar.gz
FIMEMAIL
}# Funcao que realiza o backup e o compacta
backup() {
tar –totals –ignore-failed-read -zcv -f /mnt/SERVERVN02/$SERVER-$DATE.tar.gz $LIST >> $LOG 2>&1
}# Funcao que deleta os arquivos com mais de 7 dias
erase() {
find /mnt/SERVERVN02/$SERVER* -mtime +7 -exec rm -rf {} \;
}# Monsta mensagem de log
echo “————- Starting Backup date `date +%d/%m/%Y” “%H:%M` ————-” >> $LOG
tomount
echo “————- Finishing Backup date `date +%d/%m/%Y” “%H:%M` ————-” >> $LOG# Envia o e-mail
send_mail# Desmonta a unidade
umount /mnt/SERVERVN02
- Agora, temos que deixar o script com permissão de execução
# chmod +x /opt/backup/backup_files.sh - Vamos agendar para que o backup seja executado todos os dias as 23 horas
# 0 23 * * * /opt/backup/bkp_files.sh
Pronto, nosso script de backup já deve estar funcionando e disparando e-mails.