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.687 ]
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
Backup de Máquina Virtual - XenServer
Script de backup MySQL [melhorado]
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Estou com sede em aprender sobre o nosso querido Linux. (1)
big linux sem audio como resolver (2)
Como faz para dar um update-grub por shell script [RESOLVIDO] (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta