diff --git a/deploy/jarvis-backup.sh b/deploy/jarvis-backup.sh new file mode 100644 index 0000000..72dfef4 --- /dev/null +++ b/deploy/jarvis-backup.sh @@ -0,0 +1,27 @@ +#!/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"