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:
- HOST: indicando el servidor donde tenemos MySQL instalado (en este caso particular era en el propio servidor donde se aloja el script).
- 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.
- 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 🙂
htheran
Sep 17, 2014 -
Funciona, Gracias por el aporte
Jose Alberto Benítez Andrades
Sep 19, 2014 -
Me alegro de que te sirviera htheran 🙂
Error 500 – “GET / HTTP/1.1″ 500 en wordpress | Jose Alberto Benítez Andrades
Oct 23, 2014 -
[…] la web a un estado anterior gracias a mi sistema de copias de seguridad “casero” (aquí podéis ver cómo hago copia de las bases de datos MySQL), el resultado sigue siendo el […]