Buenos días a todos!

Seguro que muchos de vosotros ya tenéis un largo bagaje en el mundo de la administración de sistemas UNIX pero quizás algunos otros no. Igualmente, me gustaría mostraros algunos scripts que me han ayudado y me ayudan en mi día a día a tener los servidores seguros y a disponer de copias de seguridad actualizadas, sin tener que estar todo el día pendiente de ellas.

Hoy os traigo un script en bash encargado de realizar una copia de seguridad (backup) de todas las bases de datos MySQL que tengamos en un servidor, el script es el siguiente:

#!/bin/bash
#
## ------ VARIABLES DE CONFIGURACION  ----##
#

HOST=localhost
USER=root
PASS=XXXXXX
BACKUP_DIR=/home/backups/dbs/
DIA=`date --date='1 days ago' +%d-%m-%Y`

## ----- FIN DE LA CONFIGURACION  -------- ##

if [ ! -d $BACKUP_DIR ]; then
  mkdir -p $BACKUP_DIR
fi

# Backup de MySQL
MYSQL_DBS=$(mysqlshow -h $HOST -u $USER -p$PASS | awk ' (NR > 2) && (/[a-zA-Z0-9]+[ ]+[|]/) && ( $0 !~ /mysql/) { print $2 }');

for DB in $MYSQL_DBS ; do
  echo "* Haciendo un backup de los datos MySQL para $DB@$HOST..."
  STR=$BACKUP_DIR"/"$DB"_"$DIA"_copsec.sql"
  echo "mysqldump -h $HOST -u $USER -p$PASS $DB > $STR"
  mysqldump -h $HOST -u $USER -p$PASS $DB > $STR
done

Tan solo debemos cambiar los parámetros iniciales:

  1. HOST: indicando el servidor donde tenemos MySQL instalado (en este caso particular era en el propio servidor donde se aloja el script).
  2. USER: se refiere al usuario MySQL con permisos totales sobre el servidor, para que sea capaz de obtener la información de todas las bases de datos existentes.
  3. PASSWORD: clave del usuario que hemos introducido anteriormente.

Yo a este script lo he llamado mysqlscript.sh y lo tengo alojado dentro de una carpeta llama /home/scripts/ así que…. para que se ejecute diariamente tengo una tarea cron que llama a dicho script todos los días. Para ello, editamos cron ejecutando crontab -e y añadimos la siguiente línea:

30 23 * * * /home/scripts/mysqlbackup.sh

Dicha línea indica que la ejecución del script se realizará todos los días a las 23:30 (11:30 pm).

Espero que os ayude y os sirva esta información, iré colgando más scripts 🙂