ksergio.com

I love coding

← Volver

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.