Este script realiza copias de la base de datos indicada
#!/bin/bash ####################SECCION DE CONFIGURACION###################3 DB_NAME=db_name DB_USER=db_user DB_PASS=db_pass DB_HOST=db_host ADMIN_EMAIL= tu.direccion@de.correo.com DOMINIO=tu.dominio.com MAIL_DEBUG=1 BACKUP_DIR=/ruta/donde/se/almacenaran/los/backups ############################################################ LAST_FILE=`ls -1t $BACKUP_DIR | head -n1` #fichero temporal mysqldump --user=${DB_USER} --password=${DB_PASS} --host=${DB_HOST} ${DB_NAME} | bzip2 -c > /tmp/db-$(date +%Y%m%d).sql.bz2 if [ "$?" -ne "0" ]; then if [ $MAIL_DEBUG = 0 ]; then echo -e "\nmysqldump failed!" exit 1 else echo "Ha habido un problema al ejecutar el backup de la base de datos. El comando mysqldump ha fallado" | mail -s "Backup de $DOMINIO" $ADMIN_EMAIL exit 1 fi fi tar -cjf /tmp/db-$(date +%Y%m%d).tar.bz2 /tmp/db-$(date +%Y%m%d).sql.bz2 if [ "$?" -ne "0" ]; then if [ $MAIL_DEBUG = 0 ]; then echo -ne "tarball creation failed!\\n" exit 1 else echo "Ha habido un problema al comprimir el backup de la base de datos. El comando tar ha fallado" | mail -s "Backup de $DOMINIO" $ADMIN_EMAIL fi fi TEMP_FILE=/tmp/db-$(date +%Y%m%d).tar.bz2 ######################comprobacion de tamaño####################################### if [ `du -h $TEMP_FILE | cut -f1` == `du -h $BACKUP_DIR/$LAST_FILE | cut -f1` ]; then if [ $MAIL_DEBUG = 0 ]; then echo " No se hace nada, no ha habido cambios" else echo "No se ha completado el backup, ya que no ha habido cambios" | mail -s "Backup de $DOMINIO" $ADMIN_EMAIL fi else if [ $MAIL_DEBUG = 0 ]; then echo "Ha habido cambios, procedemos a almacenar el backup" fi mv /tmp/db-$(date +%Y%m%d).tar.bz2 $BACKUP_DIR echo "" | mutt -a $BACKUP_DIR/db-$(date +%Y%m%d).tar.bz2 -s "Backup de $DOMINIO" $ADMIN_EMAIL fi contadortotal=0 for e in $( ls ./ | nl | cut -f2 ) do let contadortotal=$contadortotal+1 done let contadortotal=$contadortotal-30 contadorparcial=0 for e in $( ls -tr ./ | nl | cut -f2 ) do let contadorparcial=$contadorparcial+1 if [ $contadorparcial -lt $contadortotal ] ; then rm $e fi done
3 comments for “[Bash] Mysql Backup v 1.2”