Backup de arquivos e banco de dados com envio de e-mail
Publicado por Perfil removido (última atualização em 20/04/2019)
[ Hits: 4.784 ]
Objetivo do script: realizar um backup sincronizando os arquivos e base de dados de acordo com o dia da semana para um HD externo, enviando um e-mail após concluído, bem como se ocorrer algum erro durante o backup.
Exemplo do crontab:
00 22 * * 1-5 /bin/backup
** Necessário ajustar as variáveis do script.
#!/bin/bash #/bin/backup ## Binários SENDEMAIL="/usr/bin/sendEmail" RSYNC="/usr/bin/rsync" MYSQLDUMP="/usr/bin/mysqldump" GZIP="/bin/gzip" UMOUNT="/bin/umount" MOUNT="/bin/mount" ## Váriaveis SERVER_NAME=`/bin/hostname` DIA_DA_SEMANA=`date '+%A'` DATA=`date "+%d-%m-%Y"` HORA=`date '+%H:%M'` LOG="/var/log/backup/backup-$DATA.log" EXT=`mount|grep /dev/sda1` ## Caminho de origem dos backups ### Caminho da pasta home HOME="/home" ### Caminho da pasta dados DADOS="/dados" ### Caminho da configuração do samba SMB_CONF="/etc/samba/smb.conf" ### Caminho da configuração do mysql MY_CNF="/etc/mysql/my.cnf" ## Caminho do hd externo para ser feito o backup DESTINO="/media/hdexterno/$DIA_DA_SEMANA" MOUNT_POINT="/media/hdexterno" DISPOSITIVO="/dev/sda1" ### Configurações de e-mail EMAIL_PRINCIPAL="email@empresa.com.br" EMAIL_COPIA="email2@empresa.com.br" EMAIL_ENVIO="alerta.empresa@gmail.com" EMAIL_PASSWORD="senha_email" SERVER_EMAIL="smtp.gmail.com:587" function desmontar_hd(){ $UMOUNT -l $MOUNT_POINT if [ $? != 0 ]; then envio_email "Erro ao desmontar o HD de backup - $SERVER_NAME" "Ocorreu um erro ao desmontar o HD de backup, verifique se o HD está funcionando corretamente." exit 1 fi } function envio_email(){ #$1 = Titulo do email #$2 = Mensagem do email ## Verifica o tamanho do LOG gerado if [ `/usr/bin/du $LOG|/usr/bin/cut -f 1` -gt 10000 ] then ## Caso o LOG gerado tiver mais que 10M enviar email sem LOG $SENDEMAIL -f $EMAIL_ENVIO -cc $EMAIL_COPIA -t $EMAIL_PRINCIPAL -u "$1" -m "$2" -s $SERVER_EMAIL -xu $EMAIL_ENVIO -xp $EMAIL_PASSWORD else ## Caso o LOG gerado tiver 10M ou menos enviar o email com LOG $SENDEMAIL -f $EMAIL_ENVIO -cc $EMAIL_COPIA -t $EMAIL_PRINCIPAL -u "$1" -m "$2" -a $LOG -s $SERVER_EMAIL -xu $EMAIL_ENVIO -xp $EMAIL_PASSWORD fi exit 0 } function backup_completo(){ echo "Sincronizando arquivos em $1 para $2 - `date '+%d/%m/%G %H:%M'`" >> $LOG $RSYNC --delete --log-file=$LOG -a $1 $2 } function backup_mysql(){ ## Backup de todas as bases de dados do banco de dados MySQL $MYSQLDUMP -u backup -pSenha_MySQL -x -e -A | $GZIP > $DESTINO/backup.sql.gz } function verifica_erro_backup(){ if [ $? != 0 ]; then envio_email "Erro no backup - $SERVER_NAME" "Ocorreu um erro no backup em $1, verifique se o HD está funcionando corretamente." desmontar_hd exit 1 fi } function montar_hd(){ if [ -z "$EXT" ]; then ##Montagem do HD externo $MOUNT $DISPOSITIVO $MOUNT_POINT ## Caso ocorra falha na montagem, enviar um e-mail avisando if [ $? != 0 ]; then echo "Ocorreu um erro ao montar o HD de backup, verifique se o HD está funcionando corretamente" >> $LOG envio_email "Erro ao montar o HD de backup - $SERVER_NAME" "Erro no HD de backup, verifique o LOG." ## Finaliza o script com erros exit 1 fi fi } echo "Iniciando os procedimentos de backup - `date '+%d/%m/%G %H:%M'`" >> $LOG ## Monta o HD se o mesmo estiver disponivel montar_hd ## Backup do diretório /home backup_completo $HOME $DESTINO verifica_erro_backup $HOME ## Backup do diretório /dados backup_completo $DADOS $DESTINO verifica_erro_backup $DADOS ## Backup da configuração do samba backup_completo $SMB_CONF $DESTINO verifica_erro_backup $SMB_CONF ## Backup da configuração do mysql backup_completo $MY_CNF $DESTINO verifica_erro_backup $MY_CNF ## Backup de todas as bases de dados mysql backup_mysql verifica_erro_backup "Banco de dados - base de dados MySQL" desmontar_hd echo "Backup finalizado - `date '+%d/%m/%G %H:%M'`" >> $LOG envio_email "Backup realizado com sucesso - $SERVER_NAME" "O backup foi realizado com com sucesso." ## Finaliza o script com sucesso exit 0
Script para gravação de BKPs em DVDs-RW
Realiza backup de VMs ligadas no XenServer 6.5
rotate.sh - Rotaciona arquivos de acordo com a data
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Meus HDs não aparecem mais no boot da placa mãe (2)
Abrir arquivos em lotes no terminal usando o LibreOffice (0)
Meu sistema operacional linux Ubuntu nao abre (8)
Não compila (ou roda) os exemplos (6)
Alguém ja usou o package manager gnu guix em outros sistemas operacion... (0)