52 lines
1.8 KiB
Bash
Executable File
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." |