En este artículo, te mostraré cómo respaldar tus bases de datos de MariaDB en Mega.nz utilizando rclone. Este proceso incluye la eliminación de backups locales antiguos y la subida de nuevos backups a la nube.
Prerrequisitos
Antes de comenzar, asegúrate de tener lo siguiente:
- rclone instalado: Si no lo tienes, sigue las instrucciones en rclone.org.
- Configuración de rclone con Mega.nz: Ejecuta rclone config y sigue las instrucciones para añadir una nueva configuración remota para Mega.nz.
El Script de Backup
El siguiente script realiza un backup de las bases de datos de MariaDB y las sube a Mega.nz. Además, elimina los backups locales más antiguos de 30 días y los backups en la nube más antiguos de 45 días.
#!/bin/bash
# Borrar backup anterior a 30 días
ANTERIORGESTION=$(date +"%Y" --date='-7 day')
ANTERIORFECHA=$(date +"%Y%m%d" --date='-7 day')
OUTPUT="/backups/mysql/$ANTERIORGESTION/$ANTERIORFECHA"
if [ -d "$OUTPUT" ]; then
rm -r "$OUTPUT"
fi
# Generar backup
NOW=$(date +"%Y%m%d%H%M%S")
GESTION=$(date +"%Y")
FECHA=$(date +"%Y%m%d")
DIA=$(date +"%d")
DOW=$(date +%u)
USER="root"
PASSWORD=""
OUTPUT="/backups/mysql/$GESTION/$FECHA"
if [ ! -d "$OUTPUT" ]; then
mkdir -p "$OUTPUT"
fi
if [[ $DOW != 7 ]]; then
databases=`mysql -u $USER -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
for db in $databases; do
if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]]; then
if [[ "$db" == "basededatos1" ]] || [[ "$db" == "basededatos2" ]] || [[ "$db" == "basededatos3" ]] || [[ "$db" == "basededatos4" ]]; then
echo "Dumping database $db: $OUTPUT/$db$NOW.sql.gz"
mysqldump -u $USER --single-transaction --databases $db | gzip -c --best > $OUTPUT/$db$NOW.sql.gz
echo "rclone copy $OUTPUT/$db$NOW.sql.gz mega:usuario/backups/$GESTION/$FECHA"
rclone copy $OUTPUT/$db$NOW.sql.gz mega:usuario/backups/$GESTION/$FECHA
fi
fi
done
fi
chown -R www-data:www-data $OUTPUT
# Eliminar backups en la nube más antiguos de 45 días
ELIMINARGESTION=$(date +"%Y" --date='-45 day')
ELIMINARFECHA=$(date +"%Y%m%d" --date='-45 day')
if [[ $GESTION != $ELIMINARGESTION ]]; then
echo "usuario/backups/$ELIMINARGESTION/$ELIMINARFECHA"
rclone purge mega:usuario/backups/$ELIMINARGESTION/$ELIMINARFECHA --mega-hard-delete
rclone rmdirs mega:usuario/backups/ --mega-hard-delete
fi
Explicación del Script
- Eliminar backups locales antiguos: El script elimina los backups locales que tienen más de 30 días.
- Generar backups: El script genera backups de las bases de datos especificadas y las comprime.
- Subir backups a Mega.nz: Utiliza
rclone
para copiar los backups generados a Mega.nz. - Cambiar permisos: Cambia los permisos del directorio de backups.
- Eliminar backups en la nube antiguos: Elimina los backups en Mega.nz que tienen más de 45 días.
Con este script, tus backups de MariaDB se almacenarán de manera segura en Mega.nz. ¡Espero que te sea útil!