59 lines
1.9 KiB
Bash
Executable File
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 ==="
|