#!/bin/bash

# Parámetros de conexión
DB_HOST="$1"
DB_USER="$2"
DB_PASS="$3"
DB_DUMP="$4"

# Verifica si se especificó la carpeta de destino
if [[ -z "$DB_DUMP" ]]; then
    echo "Falta el parámetro del directorio de backups."
    exit 1
fi

# Crea la carpeta si no existe
mkdir -p "$DB_DUMP"

# Obtiene la lista de bases de datos, excluyendo las predeterminadas del sistema
DBS=$(mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|sys)")

# Itera sobre cada base de datos
for DB in $DBS; do
    echo "Respaldando la base de datos: $DB"

    # Genera el dump
    DUMP_FILE="$DB_DUMP/$DB.sql"
    mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" \
        --comments --compact --routines --single-transaction \
        --skip-add-locks --skip-lock-tables --default-character-set=utf8 --compress "$DB" > "$DUMP_FILE"

    # Comprime directamente en .tar.gz
    tar -czf "$DUMP_FILE.tar.gz" "$DUMP_FILE"

    # Elimina el archivo SQL original después de comprimirlo
    rm -f "$DUMP_FILE"

    echo "Backup de $DB completado en $DUMP_FILE.tar.gz"
done

echo "Todos los backups han sido generados."
