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
rclonepara 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!
Descubre más desde Blog personal de Guido Cutipa
Suscríbete y recibe las últimas entradas en tu correo electrónico.