quarta-feira, 29 de julho de 2009

Backup MySQL

#!/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: