[Bash] Mysql Backup v 1.2

Este script realiza copias de la base de datos indicada

01#!/bin/bash
02####################SECCION DE CONFIGURACION###################3
03DB_NAME=db_name
04DB_USER=db_user
05DB_PASS=db_pass
06DB_HOST=db_host
07ADMIN_EMAIL= tu.direccion@de.correo.com
08DOMINIO=tu.dominio.com
09MAIL_DEBUG=1
10BACKUP_DIR=/ruta/donde/se/almacenaran/los/backups
11############################################################
12 
13LAST_FILE=`ls -1t $BACKUP_DIR | head -n1`
14 
15#fichero temporal
16mysqldump --user=${DB_USER} --password=${DB_PASS} --host=${DB_HOST} ${DB_NAME}  | bzip2 -c > /tmp/db-$(date +%Y%m%d).sql.bz2
17 
18if [ "$?" -ne "0" ]; then
19        if [ $MAIL_DEBUG = 0 ]; then
20        echo -e "\nmysqldump failed!"
21        exit 1
22    else
23        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
24 
25            exit 1
26    fi
27fi
28 
29tar -cjf /tmp/db-$(date +%Y%m%d).tar.bz2 /tmp/db-$(date +%Y%m%d).sql.bz2
30if [ "$?" -ne "0" ]; then
31    if [ $MAIL_DEBUG = 0 ]; then   
32        echo -ne "tarball creation failed!\\n"
33               exit 1
34    else
35        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
36    fi
37fi
38 
39TEMP_FILE=/tmp/db-$(date +%Y%m%d).tar.bz2
40######################comprobacion de tamaño#######################################
41 
42if [ `du -h $TEMP_FILE | cut -f1` == `du -h $BACKUP_DIR/$LAST_FILE | cut -f1` ]; then
43    if [ $MAIL_DEBUG = 0 ]; then
44        echo " No se hace nada, no ha habido cambios"
45    else
46        echo "No se ha completado el backup, ya que no ha habido cambios" | mail -s "Backup de $DOMINIO" $ADMIN_EMAIL
47    fi   
48else
49    if [ $MAIL_DEBUG = 0 ]; then
50        echo "Ha habido cambios, procedemos a almacenar el backup"
51    fi   
52mv /tmp/db-$(date +%Y%m%d).tar.bz2 $BACKUP_DIR
53echo "" | mutt -a  $BACKUP_DIR/db-$(date +%Y%m%d).tar.bz2 -s "Backup de $DOMINIO" $ADMIN_EMAIL
54fi
55 
56contadortotal=0
57for e in $( ls ./ | nl | cut -f2 )
58do
59let contadortotal=$contadortotal+1
60done
61let contadortotal=$contadortotal-30
62 
63contadorparcial=0
64 
65for e in $( ls -tr ./ | nl | cut -f2 )
66do
67let contadorparcial=$contadorparcial+1
68if [ $contadorparcial -lt $contadortotal ] ; then
69rm $e
70fi
71done

3 comments for “[Bash] Mysql Backup v 1.2

Deja un comentario