msgbartop
Este blog nace como un intento de mantener un hilo coherente entre mis aficiones y pensamientos
msgbarbottom

07 Jul 07 Script de backup de una base de datos y envio por correo

Con motivo de la reciente pérdida de información crítica (bases de datos de DKPs) en Nexxus, debido básicamente a que nuestra compañía de hosting se dio la fuga al estilo Fórum Filatélico, he desarrollado un pequeño script que realiza una copia de seguridad de una base de datos MySQL y la envia por email.

Es un Bourne script (.sh) que debería ejecutarse perfectamente en cualquier sistema tipo Unix/Linux/BSD/Darwin.

Lo podeis descargar de backupbbdd.sh. Además necesitareis un fichero mail.msg

#!/bin/sh
# Script minimalista de backup y envio por correo de una base de datos MySQL
# Este script ha sido desarrolado por Javier Quevedo Fernandez
# Este script esta licenciado bajo licencia GPL
# Si tiene algun problema o necesita ayuda visite http://sencsblog.blogspot.com

# NOTA
# Este script require un fichero de texto mail.msg con el contenido del mensaje
# Este script generará una carpeta donde ira guardando todos los backups
# FIN DE NOTA

#CONFIGURACION (modifique estos datos segun su configuracion)
dbuser=user
dbpass=password
dbserver=localhost
dbname=databasename
mails=example1@mail.com\ example2@mail.com\ example3@mail.com
mailcontent=mail.msg
sfile=backup
backupdir=backupexample
#FIN DE CONFIGURACION

#NO MODIFIQUE LAS LINEAS A CONTINUACION SI NO SABE LO QUE ESTA HACIENDO

today=`(set \`date\`; echo $3$2$6)`

if mkdir $backupdir; then
echo Creando directorio
else
echo Iniciando
fi

if mysqldump -u$dbuser -p$dbpass -h $dbserver –opt $dbname > $sfile$today.sql; then
echo Recuperando base de datos en archivo $file$today.sql
if cat $mailcontent | mutt -a “$sfile$today.sql” -s “Backup DKPs Nexxus” $mails; then
mv $sfile$today.sql ./$backupdir
echo “Backup de la base de datos enviado correctamente” en la fecha $today
else
echo Error, no se han podido enviar los correos. Abortando.
mv $sfile$today.sql ./$backupdir
fi
else
echo Error, no se ha podido recuperar la base de datos. Abortando.
fi

#FIN DEL SCRIPT