#!/bin/bash
# 🛡️ DOCKER INFRA - GFS BACKUP SYSTEM (Ubuntu 24.04 Optimized)

# ÚJ ELÉRÉSI UTALOK
PROJECT_ROOT="/opt/docker"
NAS_ROOT="/mnt/nas/app_data/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
DOM=$(date +%d) 
DOW=$(date +%u) 

# Szükséges mappák biztosítása a NAS-on
mkdir -p $NAS_ROOT/daily $NAS_ROOT/weekly $NAS_ROOT/monthly

echo "--- 📦 Mentés indítása: $TIMESTAMP ---"

# 1. ADATBÁZIS MENTÉS (Konzisztens SQL Dump)
# A shared-postgres konténerből kimentjük az összes adatbázist
docker exec shared-postgres pg_dumpall -c -U postgres > $PROJECT_ROOT/full_db_dump.sql

# 2. TÖMÖRÍTÉS ÉS KONFIGURÁCIÓK MENTÉSE
# Kizárjuk a nyers adatbázis fájlokat és a felesleges node mappákat
BACKUP_FILE="infra_full_$TIMESTAMP.tar.gz"

tar -czf /tmp/$BACKUP_FILE -C $PROJECT_ROOT \
    --exclude='infra/postgres/data' \
    --exclude='node_modules' \
    --exclude='*.log' \
    .

# 3. GFS ROTÁCIÓS MÁSOLÁS
if [ "$DOM" == "01" ]; then
    echo "Havi mentés rögzítése..."
    cp /tmp/$BACKUP_FILE $NAS_ROOT/monthly/
fi

if [ "$DOW" == "7" ]; then
    echo "Heti mentés rögzítése..."
    cp /tmp/$BACKUP_FILE $NAS_ROOT/weekly/
fi

# Napi mentés
mv /tmp/$BACKUP_FILE $NAS_ROOT/daily/

# 4. AUTOMATIKUS TAKARÍTÁS (30 napos heti, 1 éves havi mentés megőrzése)
find $NAS_ROOT/daily -type f -mtime +7 -delete
find $NAS_ROOT/weekly -type f -mtime +30 -delete
find $NAS_ROOT/monthly -type f -mtime +365 -delete

# 5. IDEIGLENES SQL DUMP TÖRLÉSE
rm $PROJECT_ROOT/full_db_dump.sql

echo "✅ Mentés sikeresen lezárva: $NAS_ROOT/daily/$BACKUP_FILE"