#!/bin/bash

# Configuración del servidor remoto SFTP
SFTP_USER="copias_carrera"
SFTP_HOST="154.53.45.12"
SFTP_PORT="22"
SFTP_REMOTE_DIR="/basesdedatos/"
LOCAL_DIR="/home/lugammcom/copiasdeseguridad"
SFTP_KEY="/root/.ssh/id_backups_copias_carrera"

mkdir -p "$LOCAL_DIR"

# Archivo temporal para comandos SFTP (evita que el heredoc consuma la entrada del while)
SFTP_BATCH=$(mktemp)

# 1. Obtener bases de datos, volcar y comprimir en .sql.gz
sudo mysql -N -e 'show databases' | grep -Ev '^(information_schema|performance_schema|sys)$' | while read -r dbname; do
    ARCHIVO="${LOCAL_DIR}/${dbname}.sql.gz"
    
    echo "Respaldando y comprimiendo: $dbname"
    sudo mysqldump --complete-insert --routines --triggers --single-transaction "$dbname" | gzip > "$ARCHIVO"

    # 2. Generar comandos de subida en archivo batch
    echo "Enviando $ARCHIVO al servidor remoto..."
    cat <<EOF > "$SFTP_BATCH"
put "$ARCHIVO" "$SFTP_REMOTE_DIR"
bye
EOF

    # Envío mediante autenticación por llave SSH privada sin contraseña
    sftp -i "$SFTP_KEY" -o StrictHostKeyChecking=no -P "$SFTP_PORT" -b "$SFTP_BATCH" "${SFTP_USER}@${SFTP_HOST}"

done

rm -f "$SFTP_BATCH"