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
6 comentarios:
Si encuentras un modo de trocearlo para bases de datos mas grandes de 10 mbs, yo me apunto a usarlo
/Fons
Es cierto. Los desastres informáticos son totalmente inesperados, desde un pico de tension hasta un virus informático que te hace perder el tiempo hasta la desesperación. Es terrible el tiempo que he perdido en limpiar el ordenador, ni siquiera con una restauración del sistema se ha corregido el problema. A golpe de HKEY_LOCAL_MACHINE/Run y RunOnce. Que horror, y ni que decir de los Adware, hay que ser cansinos. Cuantas veces se nos ha pasado por la cabeza que se nos estropea el ordenador y que tenemos que hacer una copia de seguridad cuanto antes. Nadie ni núnca se esta a salvo de una eventual pérdida de datos de discos duros de ahí la importancia de un buen sistema de copias de seguridad. Esta es la mejor forma de recuperar su informacion en un momento de desastre que generalmente coincide con las prisas a la hora de utilizar el sistema. Y si a pesar de todo es necesario una recuperacion de datos ó recuperar el disco duro porque no teníamos las copias actualizadas, le recomendamos consulte con una empresa especializada como es el caso de www.lineared.com en dónde le podrán recuperar los datos ó llevar a cabo la recuperacion del disco duro . No lo dude, esta es la forma mas eficaz y segura de recuperar discos duros .
Al final acabamos todos con las mismas soluciones.
En el mío, comprimo todo ese SQL con bzip2 al final. De unos 4 megas de SQL pasa a menos de 1 mega.
Lo que pide Fons de dividirlo supongo que se podría realizar con split o similares (por cierto, creo que Gmail soporta ahora adjuntos de hasta 20 megas :D).
Sí, comprime con gzip o con bzip2, que te quedará mucho más compacto el mail ':D
Está muy bien el script.
La verdad que iba a borrar el post spamer de angel (que no Aj0) pero como es un spam tan currao e inadvertido lo dejaré.
Por cierto, no pienso clickar en tu web esa de recuperación de datos.
Juas de momento le he metido comprensión por zip porque enviar todos los días 400 KB y creciendo tiene delito. 34 KB for the win.
Publicar un comentario