#!/bin/bash

: << 'Comentario'
Comentario


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

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

base_home="/home/gbcoha2h/public_html"
base_backup="/home/gbcoha2h/Backups"
final_user="gbcoha2h"
date=$(date +"%d-%b-%Y")

umask 022

log_file="$base_home/FilesBck.log"

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

# ============================================================
# DETECTAR COMPRESOR (compresion paralela)
# ============================================================

if command -v pigz >/dev/null 2>&1; then
    COMPRESS="pigz"
else
    COMPRESS="gzip"
fi

# ============================================================
# FUNCION BACKUP FILESYSTEM
# ============================================================

backup_fs() {

    local folder_name="$1"
    local client_name="$2"

    local source_path="$base_home/$folder_name"
    local backup_path="$base_backup/$client_name"

    mkdir -p "$backup_path"

    local tar_file="$backup_path/$folder_name-$date.tar.gz"

    echo "Procesando FS: $folder_name ($client_name)" >> "$log_file"
    
    # Exclusion inteligente de node_modules
    if [ -f "$source_path/package.json" ]; then
        EXCLUDE_NODE="--exclude=node_modules"
    else
        EXCLUDE_NODE=""
    fi

    # BACKUP OPTIMIZADO
    nice -n 19 ionice -c2 -n7 tar -I "$COMPRESS" \
        --exclude="cache" \
        --exclude="tmp" \
        --exclude="logs" \
        --exclude="*.log" \
        --exclude="*.zip" \
        --exclude=".git" \
        --exclude=".ftpquota" \
        $EXCLUDE_NODE \
        --ignore-failed-read \
        --warning=no-file-changed \
        -cf "$tar_file" \
        -C "$base_home" "$folder_name"

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


    chmod 644 "$tar_file"
    
    # ownership correcto
    chown $final_user:$final_user "$tar_file"

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

    # Limpieza segura, solo queda el ultimo backup
    ls -t "$backup_path"/$folder_name-*.tar.gz 2>/dev/null | tail -n +2 | xargs -r rm -f
    
    # Asegurar ownership en carpeta (por si acaso)
    chown -R $final_user:$final_user "$backup_path"

}

# ============================================================
# EJECUCION
# ============================================================
#### "ORIGEN" "DESTINO" ####


########BIOCULTIVOS##########
backup_fs "aquaplants" "Biocultivos"


########BIZTRACK##########
backup_fs "biztrack" "Biztrack"


########CYEMEDICA##########
backup_fs "cyemedica" "Cyemedica"


########GLOBALOPF##########
backup_fs "globalopf" "GlobalOpf"


########HOSER##########
backup_fs "hoser" "Hoser"


: << 'Comentario'
########NUCLEO##########
backup_fs "nucleo" "Nucleo"
Comentario


########OPFDEMO##########
backup_fs "opfdemo" "Opfdemo"


########SIROMAX##########
backup_fs "siromax" "Siromax"


########WEB##########
backup_fs "web" "Wpglobal"


########DATUSSF##########
backup_fs "datussf" "Datussf"


########FILES##########
backup_fs "files" "Files"


########WSHUB##########
backup_fs "wshub" "Wshub"


########WSOPF##########
backup_fs "wsopfs" "Wsopf"


########WMWMS##########
backup_fs "wswms" "Wmwms"


########SOLUCORP##########
backup_fs "solucorp" "Solucorp"

