Backups automáticos de MySQL/MariaDB con bash
28/1/2024
El script.
#!/bin/bash
Variables para el nombre de la base de datos que vamos a exportar
DB_NAME="db_name"
Aquí genero el nombre del fichero con el cual se va a guardar el backup.
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
FILENAME="backup_${TIMESTAMP}.sql"
Mysqldump
mysqldump es una utilidad que viene al instalar mysql-client y nos permite crear copias de seguridad.
Para evitar pasar las credenciales por consola, mysqldump nos permite usasr un fichero de configuración. De la otra forma, quedaría la traza en los comandos ejectuados.
mysqldump --defaults-extra-file='mysql.conf' $DB_NAME > backups/"${FILENAME}"
Borrar los backups viejos
Por ultimo busco en la carpeta backups todos los archivos.
-type f le especifico solo archivos, ni carpetas ni ficheros especiales.
-mtime +30 aquellos que tengan más de 30 días.
-delete borra todos los archivos que se han encontrado cumpliendo las condiciones
find ./backups -name "backup_*" -type f -mtime +30 -delete;
Podría simplemente hacer
find ./backups -mtime +30 -delete;
Ahora usa este script con cron o la forma que quieras para llamarlo de forma recurrente.