#!/bin/bash
U_PASTA="/home/user/backup" # < -- substitua pelo caminho onde vai salvar o backup
U_DATA=$(/bin/date +%Y%m%d%H%M%S)
U_CAMINHO="backup-$U_DATA.sql"
U_HOST="localhost"
U_USER="root"
U_PASSWORD="********"
U_DATABASE="minha_base_mysql"
U_EMAIL="meuemail@meudominio.com.br"
#
erro=""
#
cd $U_PASTA
#
#
# Faz o backup do MySQL
#
mysqldump -h $U_HOST -u $U_USER -p$U_PASSWORD $U_DATABASE > $U_CAMINHO
if [ $? -ne 0 ]
then
   erro="Erro na geracao do SQL"
fi
#
#
# Compacta o arquivo
#
if [ "$erro" == "" ]
then
   gzip $U_CAMINHO
   if [ $? -ne 0 ]
   then
       erro="Erro ao compactar o SQL"
   fi
fi
#
# Apaga arquivos antigos e mantem apenas os 'n' ultimos
#
n=10
c=0
for i in *.sql.gz
do
   let c=$c+1
done
if [ $c -gt $n ]
then
   for i in *.sql.gz
   do
       if [ $c -le $n ]
       then
           break
       fi
       rm $i
       let c=$c-1
   done
fi
#
if [ "$erro" == "" ]
then
   erro="Backup efetuado com sucesso!"
   subject="[Sucesso]"
else
   subject="[Erro]"
fi
echo "$erro => $U_CAMINHO.gz" | mail -s "$subject Backup em $(/bin/date +'%d/%m/%Y %H:%M:%S')" $U_EMAIL
#
# Volta para a pasta anterior
cd -
Para agendar a execução, digite:
$ crontab -e
Vai abrir um editor de texto com o arquivo de configuração da cron. Daí você pode digitar algo como:
# m h  dom mon dow   command 00 02 * * * /home/user/backup_bd.sh Onde backup_bd.sh é o arquivo do script que passei acima.
Nenhum comentário:
Postar um comentário