Bueno este seria el script a ejecutar. Tenemos que tener en cuenta que es necesario tener montada la un unidad de NAS en una carpeta local y configurar el crontab para que se ejecute cuando consideremos necesario.
#!/bin/bash
# Script de terminal para realizar backups de todas las Bases de Datos de MySQL
# Volcado cada hora al servidor Nas /nasServer/mysql
# Descripcion detallada de los datos:
# Directorio:  /nasServer/mysql/yyyy-mm-dd
# Fichero: mysql-DBNAME.2009-07-23-14:23:40.gz
# Ruta completa: /nasServer/mysql/yyyy-mm-dd/mysql-DBNAME.2009-07-23-14:23:40.gz
# -------------------------------------------------------------------------
# GNU GENERAL PUBLIC LICENSE
#                       Version 3, 29 June 2007
#
# Copyright (C) 2007 Free Software Foundation, Inc. 
# Everyone is permitted to copy and distribute verbatim copies
# of this license document, but changing it is not allowed.
# -------------------------------------------------------------------------
# Ultima actualización: Jul-23-2009 - Asegurarse que NAS esta realmente montado en $NAS
# -------------------------------------------------------------------------
NOW=$(date +"%Y-%m-%d") # Formato yyyy-mm-dd
FILE=""			# Uso en el bucle
NASBASE="/nasServer"		# Punto de montage de NAS
BAK="${NASBASE}/mysql/${NOW}" # Ruta del directorio backup en $NAS
### Configuración del Server ###
#* Usuario de MySQL *#
MyUser="root"
#* PASSWORD del usuario de MySQL *#
MyPass="PASSWORD"
#* Host de MySQL *#
MyHost="127.0.0.1"
#* Binarios de MySQL *#
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
# Asegurarse que nas esta realmente montado
mount | awk '{ print $3}' |grep -w $NASBASE >/dev/null
if [ $? -ne 0 ]
then
	echo "Error: NAS no montado en $NASBASE, por favor monta el Servidor NAS el un direcotio local local y vuelve a intentarlo."
	exit 99
fi
### NAS debe montarse de forma avanzada ###
# Se asume que /nasServer esta montado via /etc/fstab
if [ ! -d $BAK ]; then
  mkdir -p $BAK
else
 :
fi
# Obtener la lista de todas las BBDD
DBS="$($MYSQL -u $MyUser -h $MyHost -p$MyPass -Bse 'show databases')"
# Comenzar volcado de la base de datos una a una
for db in $DBS
do
 FILE=$BAK/mysql-$db.$NOW-$(date +"%T").gz
 # Comprimir todas los ficheros con gzip.
 $MYSQLDUMP -u $MyUser -h $MyHost -p$MyPass $db | $GZIP -9 > $FILE
done
Comentarios