#!/bin/bash

: << 'Comentario'
Comentario

ulimit -n 65535

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# ============================================================
# CONFIGURACION GLOBAL
# ============================================================

base_backup_path="/home/gbcoha2h/Backups"
log_file="/home/gbcoha2h/public_html/MysqlBck.log"
date=$(date +"%d-%b-%Y")

umask 022

echo "===== $(date) =====" >> "$log_file"

# ============================================================
# FUNCION DE BACKUP
# ============================================================

backup_db() {

    local user="$1"
    local password="$2"
    local db_name="$3"
    local client_folder="$4"

    local backup_path="$base_backup_path/$client_folder"

    mkdir -p "$backup_path"

    local sql_file="$backup_path/$db_name-$date.sql"
    local tar_file="$backup_path/$db_name-$date.tar.gz"

    echo "Procesando DB: $db_name ($client_folder)" >> "$log_file"

    mysqldump --user="$user" --password="$password"  --no-tablespaces --single-transaction --quick "$db_name" > "$sql_file"

    if [ $? -ne 0 ]; then
        echo "ERROR mysqldump: $db_name" >> "$log_file"
        return
    fi

    tar -zcf "$tar_file" -C "$backup_path" "$(basename "$sql_file")"

    if [ $? -ne 0 ]; then
        echo "ERROR compresion: $db_name" >> "$log_file"
        rm -f "$sql_file"
        return
    fi

    chmod 644 "$tar_file"
    rm -f "$sql_file"

    echo "Backup OK: $tar_file" >> "$log_file"

    # Limpieza por cliente, solo queda el ultimo backup 
    ls -t "$backup_path"/$db_name-*.tar.gz 2>/dev/null | tail -n +2 | xargs -r rm -f
}

# ============================================================
# LLAMADAS POR CLIENTE
# ============================================================

########BIOCULTIVOS##########
backup_db 'gbcoha2h_biodbopf' 'j(&5wdL)1&nj' 'gbcoha2h_biocultivos' 'Biocultivos'


########BIZTRACK##########
backup_db 'gbcoha2h_biztrackdb' '(ecYEO!PD4iW$' 'gbcoha2h_biztrack' 'Biztrack'


########CYEMEDICA##########
backup_db 'gbcoha2h_cyemebd' 'a@(UbKrKv#nf' 'gbcoha2h_cyemedica' 'Cyemedica'


########GLOBAL OPF##########
backup_db 'gbcoha2h_globalopf' '*V4JJpju7x0oGbc0pf' 'gbcoha2h_globalopf' 'GlobalOpf'


########HOSER##########
backup_db 'gbcoha2h_hoserdb' 'ho&K!}JKhG$S.68c0' 'gbcoha2h_hoser' 'Hoser'


########NUCLEO##########
: << 'Comentario'
backup_db 'gbcoha2h_nucleodb' 'nucdbtpVmRy$)yWUA' 'gbcoha2h_nucleo' 'Nucleo'
Comentario


########OPFDEMO##########
backup_db 'gbcoha2h_opfdemo' '%Ky3KBBDdPnldemo' 'gbcoha2h_opfdemo' 'Opfdemo'


########SIROMAX##########
backup_db 'gbcoha2h_siromaxdb' 'gbc0SKuKs$y0EoMV' 'gbcoha2h_siromax' 'Siromax'


########GLOBAL WP##########
backup_db 'gbcoha2h_wp_glo' ')gS9Pm6!p7' 'gbcoha2h_wp_glo' 'Wpglobal'


########SOLUCORP##########
backup_db 'gbcoha2h_solucuser' '!v!Zn0TqtvzldpBN' 'gbcoha2h_solucorp' 'Solucorp'


echo "===== FIN $(date) =====" >> "$log_file"


# Resetear log si supera 5MB
if [ -f "$log_file" ]; then
    log_size=$(stat -c%s "$log_file")
    if [ "$log_size" -gt 5242880 ]; then
        echo "===== $(date) LOG RESETEADO =====" > "$log_file"
    fi
fi
