#!/bin/bash # JARVIS database backup — runs daily, 7-day retention # Lives in repo at /var/www/jarvis/deploy/jarvis-backup.sh BACKUP_DIR="/var/backups/jarvis" LOG="/var/log/jarvis/backup.log" DB_NAME="jarvis_db" DB_USER="jarvis_user" DB_PASS="J4rv1s_Pr0t0c0l_2026!" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") OUTFILE="$BACKUP_DIR/${DB_NAME}_${TIMESTAMP}.sql.gz" mkdir -p "$BACKUP_DIR" echo "[$(date)] Starting backup..." >> "$LOG" if mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$OUTFILE"; then SIZE=$(du -sh "$OUTFILE" | cut -f1) echo "[$(date)] Backup OK: $OUTFILE ($SIZE)" >> "$LOG" else echo "[$(date)] ERROR: mysqldump failed" >> "$LOG" exit 1 fi # 7-day retention find "$BACKUP_DIR" -name "${DB_NAME}_*.sql.gz" -mtime +7 -delete echo "[$(date)] Cleanup done. Files kept: $(ls $BACKUP_DIR | wc -l)" >> "$LOG"