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.
Fuente: - http://nideaderedes.urlansoft.com/2007/04/25/copias-de-seguridad-mysql-automaticas-con-bash-y-cron/
He añadido una línea para la limpieza de la carpeta de backups, elimina los archivos con mas de 30 días.:
#!/bin/bash
fecha=$(date +%Y%m%d)
mysqldump -u root -pMYSQLPASS --all-databases > /home/backups/mySqlBackup_$fecha.sql
bzip2 /home/backups/mySqlBackup_$fecha.sql
/usr/bin/find /home/backups/*.bz2 -maxdepth 2 -mtime +30 -delete
Y hago mis copias de seguridad todos los días a las 6 de la mañana.:
0 6 * * * /home/backups/autoBackup
No hay comentarios:
Publicar un comentario