Icono del sitio Blog personal de Guido Cutipa

Respaldar Backups de MariaDB en Mega.nz usando rclone

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:

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

Con este script, tus backups de MariaDB se almacenarán de manera segura en Mega.nz. ¡Espero que te sea útil!

Salir de la versión móvil