Files
wevads-platform/scripts/pg-backup-s88.sh

59 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# WEVAL PG Backup to S88 GPU Server
# Runs daily via cron - backs up all WEVADS databases to S88 (1.5TB)
# Retention: 7 daily + 4 weekly
REMOTE="root@88.198.4.195"
REMOTE_DIR="/opt/wevads-backups/pg"
LOG="/opt/wevads/logs/pg-backup-s88.log"
DATE=$(date +%Y%m%d_%H%M)
DAY_OF_WEEK=$(date +%u)
log() { echo "$(date +"%Y-%m-%d %H:%M:%S") $1" >> $LOG; }
log "=== PG BACKUP START ==="
# Backup each database
for DB in adx_system adx_clients wevads wevads_accounts wevads_arsenal wevads_advanced; do
DUMP="/tmp/pg_${DB}_${DATE}.sql.gz"
log "Dumping $DB..."
PGPASSWORD=admin123 pg_dump -U admin -h /var/run/postgresql $DB 2>>$LOG | gzip > $DUMP
if [ -s "$DUMP" ]; then
SIZE=$(du -h $DUMP | cut -f1)
log "Transferring $DB ($SIZE) to S88..."
scp -o StrictHostKeyChecking=no $DUMP $REMOTE:$REMOTE_DIR/ 2>>$LOG
if [ $? -eq 0 ]; then
log "OK: $DB transferred"
else
log "ERROR: $DB transfer failed"
fi
rm -f $DUMP
else
log "ERROR: $DB dump empty or failed"
rm -f $DUMP
fi
done
# Weekly full backup on Sundays
if [ "$DAY_OF_WEEK" -eq 7 ]; then
WEEKLY_DIR="$REMOTE_DIR/weekly_$(date +%Y%m%d)"
ssh -o StrictHostKeyChecking=no $REMOTE "mkdir -p $WEEKLY_DIR && cp $REMOTE_DIR/pg_*_${DATE}.sql.gz $WEEKLY_DIR/ 2>/dev/null"
log "Weekly backup created: $WEEKLY_DIR"
fi
# Retention: keep 7 days daily, 4 weeks weekly
ssh -o StrictHostKeyChecking=no $REMOTE "
cd $REMOTE_DIR
# Remove daily dumps older than 7 days
find . -maxdepth 1 -name pg_*.sql.gz -mtime +7 -delete 2>/dev/null
# Remove weekly dirs older than 28 days
find . -maxdepth 1 -name weekly_* -type d -mtime +28 -exec rm -rf {} + 2>/dev/null
# Report
echo TOTAL_SIZE: \$(du -sh . | cut -f1)
echo DAILY: \$(ls -1 pg_*.sql.gz 2>/dev/null | wc -l) files
echo WEEKLY: \$(ls -1d weekly_* 2>/dev/null | wc -l) dirs
" 2>>$LOG >> $LOG
log "=== PG BACKUP END ==="