Files
service-finder/backup_manager.sh

52 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
# 🛡️ SENTINEL INFRA - TARGETED BACKUP SYSTEM v2.3
# --- ⚙️ BEÁLLÍTÁSOK (A te környezeti változóid alapján) ---
DB_CONTAINER_NAME="3aa4b73d81e8_shared-postgres"
DB_USER="kincses" # <--- Beállítva a te POSTGRES_USER értékedre
PROJECT_ROOT="/opt/docker/dev/service_finder"
NAS_ROOT="/mnt/nas/app_data/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
DOM=$(date +%d)
DOW=$(date +%u)
mkdir -p $NAS_ROOT/daily $NAS_ROOT/weekly $NAS_ROOT/monthly
echo "--- 📦 Célzott mentés indítása: $TIMESTAMP ---"
# 1. ADATBÁZIS MENTÉS (Streaming - kincses felhasználóval)
DB_BACKUP="db_dump_$TIMESTAMP.sql.gz"
echo "🐘 Adatbázis dump készítése ($DB_USER felhasználóval)..."
docker exec $DB_CONTAINER_NAME pg_dumpall -U $DB_USER | gzip > /tmp/$DB_BACKUP
# Ellenőrzés: ha 20 bájt, akkor még mindig hiba van
SIZE=$(stat -c%s "/tmp/$DB_BACKUP")
if [ $SIZE -lt 100 ]; then
echo "❌ HIBA: A mentés sikertelen (méret: $SIZE bytes). Ellenőrizd a logokat!"
else
echo "✅ DB mentés sikeres ($SIZE bytes)."
fi
# 2. KIJELÖLT MAPPÁK MENTÉSE
FILE_BACKUP="project_files_$TIMESTAMP.tar.gz"
echo "📁 Fájlok tömörítése..."
tar -czf /tmp/$FILE_BACKUP -C $PROJECT_ROOT \
backend docs frontend logs docker-compose.yml .env 2>/dev/null
# 3. MÁSOLÁS A NAS-RA (Hibakezeléssel)
echo "🚚 Másolás a NAS-ra..."
for f in $DB_BACKUP $FILE_BACKUP; do
if [ -f "/tmp/$f" ]; then
cp "/tmp/$f" "$NAS_ROOT/daily/$f" && rm "/tmp/$f"
# GFS Rotáció
if [ "$DOM" == "01" ]; then cp "$NAS_ROOT/daily/$f" "$NAS_ROOT/monthly/"; fi
if [ "$DOW" == "7" ]; then cp "$NAS_ROOT/daily/$f" "$NAS_ROOT/weekly/"; fi
fi
done
# 4. TAKARÍTÁS (Régi szemetek törlése)
find $NAS_ROOT/daily -type f -mtime +7 -delete 2>/dev/null
echo "✅ Mentési folyamat sikeresen lezárva."