Copias de seguridad MySQL automáticas con BASH y CRON
Hoy vamos a ver cómo programar la automatización de la copia de seguridad de una base de datos MySQL usando bash y cron.
Empezamos por crear un sencillo script que guarda la copia de seguridad de la base de datos comprimida en formato bz2:
#!/bin/bash fecha=$(date +%Y%m%d) mysqldump -uusuario -pclave base_datos > fichero_destino_$fecha.sql bzip2 fichero_detino_$fecha.sql
Guardamos el scrip en un fichero llamado, por ejemplo ‘backup’ en la carpeta (por poner un ejemplo): /home/users/usuario/mysql_backups/. Debemos darle permisos de ejecución haciendo:
chmod +x backup
(o los permisos que creamos más convenientes en cada caso).
El fichero de destino tendrá un nombre con el siguiente formato:
fichero_detino_20070430.bz2
(Año/mes/dÃa).
El siguiente paso es automatizar la tarea modificando el crontab. Para modificar el crontab basta con hacer:
crontab -e
0 0 * * 7 /home/users/usuario/mysql_backups/backup
Esto hace que todos los domingos a las 00:00 (hora del servidor) se haga automáticamente una copia de la base de datos. Recordemos que el formato del crontab es:
[minutos] [hora] [dÃa] [mes] [dia_de_semana] [comando]
Notas:
- El servidor debe tener instalado y funcionando el cron.
- Ejecuta el script ‘backup’ a mano una vez para comprobar que genera bien la copia de seguridad.
- Conviene comprobar, al menos una vez, que el script hace realmente las copias de seguridad con el crontab.


Julio 5th, 2007 at 5:59 pm
En contrab -e , deberia ser crontab.
Lo digo por si alguien no se percata.
Buen tutorial sin duda.
Enero 17th, 2008 at 8:12 pm
gracias por avisar, ya está “coregido” (es que las erres están muy ricas y por eso suelo comérmelas).