52 lines
1.6 KiB
Bash
Executable File
52 lines
1.6 KiB
Bash
Executable File
#!/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" |