kelwinzils
(usa Fedora)
Enviado em 21/09/2019 - 14:43h
Olá, enfrentei dificuldade a um tempo atrás para encontrar algum artigo de como fazer um backup incremental com arquivos criados ou modificados em determinada data, encontrei muito material mas nada que me atendesse como desejava, juntei alguns deles e consegui criar um que me atendeu. Estou compartilhando meu script de backup e logo depois script do sendEmail, para enviar os logs do backup automaticamente por e-mail.
#Editar as variáveis "email","origem","destino","LOG".
#Prestar atenção no formato de data dos seus arquivos, os meus estao yyyy-mm-dd, verificar com "ls -l" alterar se necessário na variável "data_alteracao".
[root@madagascar scripts]# ls -l
drwxrwxrwx. 4 madagascar madagascar 4096 ago 20 18:06 PROJETOS
-----
[root@madagascar]# vim /var/dados/scripts/bkpincremental.sh
#!/bin/bash
#CONFIGURACAO DATA/HORA
data=`/bin/date +%d-%m-%Y`
data_alteracao=`/bin/date +%Y-%m-%d`
ano=`/bin/date +%Y`
#CONFIGURACAO CAMINHO DO EMAIL LOG
email=/var/dados/scripts/emailincremental.sh #caminho do script do email que envia os logs automaticamente
#CONFIGURACAO CAMINHO BACKUP
origem=/raid1/dados/Espelhamento/PROJETOS #pasta origem dos arquivos para backup
destino=/backup/PROJETOS/Incremental_${data} #pasta destino dos arquivos para backup
#CONFIGURACAO ARQUIVO DE LOG
LOG=/raid1/log/${ano}/backup/Incremental_${data}.txt #caminho da pasta onde serão salvos os logs
exec 1>>${LOG}
exec 2>&1
#-------------------------------------------------------------------------------------------
echo "Backup Incremental (PROJETOS) Iniciado em:"
echo "-"
date
echo "-"
echo "----------"
#CRIA PASTA DESTINO DO BACKUP
mkdir $destino
#BACKUP
find $origem -type f -newermt ""$data_alteracao"" -exec cp -ruva {} $destino \; #comando backup arquivos em determinada data
echo
echo "----------"
#STATUS DO HD
echo "Status do HD:"
df -h /dev/sdc1
echo
echo "----------"
echo "Tamanho do Backup"
du -sh $destino
echo
echo
echo "Backup Finalizado em:"
echo "-"
date
echo "-"
#ENVIA LOG POR E-MAIL
sleep 5
$email
#-------------------------------------------------------------------------------------------
exit
#FIM DO SCRIPT
---
Incluir o script bkpincremental.sh em crontab para efetuar os backups automaticamente.
[root@madagascar]# vim /etc/crontab
0 18 * * 1,2,3,4 root /var/dados/scripts/bkpincremental.sh
No exemplo, executo o incremental de segunda a quinta-feira, na sexta-feira rodo um backup completo.
Exemplo de backup Completo no fim do artigo.
---
Script e-mail:
#Editar as variáveis "EMAIL_FROM","EMAIL_TO","SERVIDOR_SMTP","SENHA","ANEXO".
---
[root@madagascar]# vim /var/dados/scripts/email.sh
#!/bin/bash
data=`/bin/date +%d-%m-%Y`
ano=`/bin/date +%Y`
hora=`/bin/date +%T`
EMAIL_FROM="exemplo@gmail.com" # conta que enviará os emails
EMAIL_TO="ti@suaempresa.com.br" # conta que receberá os emails
SERVIDOR_SMTP="smtp.gmail.com:587" #endereço no servidor SMTP, observar no exemplo o gmail utiliza a porta 587
SENHA=senha12345 # senha da conta
ANEXO=/raid1/log/${ano}/backup/Incremental_${data}.txt
ASSUNTO="$HOSTNAME - $1"
MENSAGEM=$2
if [ "$1" == "" ] ;then
ASSUNTO="BACKUP INCREMENTAL DE ${data}"
fi
if [ "$2" == "" ] ;then
MENSAGEM="Backup Incremental Concluido em ${data} | ${hora}. Log em Anexo.
--
Fulano
Dpt. TI"
fi
if [ "$3" != "" ] ;then
MENSAGEM="$2 `cat $3`"
fi
sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "$ASSUNTO" -m "$MENSAGEM" -a $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_FROM -xp $SENHA #envia e-mail com anexo
#sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "$ASSUNTO" -m "$MENSAGEM" -s $SERVIDOR_SMTP -xu $EMAIL_FROM -xp $SENHA #envia e-mail sem anexo
#FIM DO SCRIPT
---
Script de backup completo:
[root@madagascar]# vim /var/dados/scripts/bkpcompleto.sh
#CONFIGURACAO DATA/HORA
data=`/bin/date +%d-%m-%Y`
data_alteracao=`/bin/date +%Y-%m-%d`
ano=`/bin/date +%Y`
email=/var/dados/scripts/emailcompleto.sh
#CONFIGURACAO CAMINHO BACKUP
origem=/raid1/dados/Espelhamento/PROJETOS
destino=/backup/PROJETOS/Completo_${data}
#CONFIGURACAO ARQUIVO DE LOG
LOG=/raid1/log/${ano}/backup/Completo_${data}.txt
exec 1>>${LOG}
exec 2>&1
#-------------------------------------------------------------------------------------------
echo "Backup Completo (PROJETOS) Iniciado em:"
echo "-"
date
echo "-"
echo "----------"
#CRIA PASTA DESTINO DO BACKUP
mkdir $destino
#BACKUPEIA
find $origem -exec cp -ruva {} $destino \;
echo
echo "----------"
#TAMANHO DO HD
echo "Status do HD:"
df -h /dev/sdc1
echo
echo "----------"
echo "Tamanho do Backup"
du -sh $destino
echo
echo
echo "Backup Completo (PROJETOS) Finalizado em:"
echo "-"
date
echo "-"
#ENVIA LOG POR E-MAIL
sleep 5
$email
#--------------------------------------------------------------------------------------------
exit
#FIM DO SCRIPT
---
Crontab ficaria assim:
[root@madagascar]# vim /etc/crontab
0 18 * * 1,2,3,4 root /var/dados/scripts/bkpincremental.sh
0 18 * * 5 root /var/dados/scripts/bkpcompleto.sh
Espero ter ajudado. Valeu..