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:

  • 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!

Entradas relacionadas

Deja un comentario