#!/bin/bash # JARVIS backup — DB dump as tar.gz, admin-panel compatible BACKUP_DIR="/var/backups/jarvis" LOG="$BACKUP_DIR/backup.log" LOCK="$BACKUP_DIR/backup.lock" DB_NAME="jarvis_db" DB_USER="jarvis_user" DB_PASS="J4rv1s_Pr0t0c0l_2026!" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") OUTFILE="$BACKUP_DIR/jarvis_backup_${TIMESTAMP}.tar.gz" TMPDIR=$(mktemp -d) mkdir -p "$BACKUP_DIR" touch "$LOCK" echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting backup..." >> "$LOG" cleanup() { rm -rf "$TMPDIR"; rm -f "$LOCK"; } trap cleanup EXIT if mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$TMPDIR/jarvis_db.sql" 2>>"$LOG"; then tar -czf "$OUTFILE" -C "$TMPDIR" jarvis_db.sql SIZE=$(du -sh "$OUTFILE" | cut -f1) echo "[$(date '+%Y-%m-%d %H:%M:%S')] Backup OK: $(basename "$OUTFILE") ($SIYE)" >> "$LOG" else echo "[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: mysqldump failed" >> "$LOG" exit 1 fi find "$BACKUP_DIR" -name "jarvis_backup_*.tar.gz" -mtime +7 -delete COUNT=$(ls "$BACKUP_DIR"/jarvis_backup_*.tar.gz 2>/dev/null | wc -l) echo "[$(date '+%Y-%m-%d %H:%M:%S')] Done. Files retained: $COUNT" >> "$LOG"