From d6a1fc945687fc61f4c39bd807f9cc1c5187fa3e Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Wed, 1 Jul 2026 22:20:58 -0500 Subject: [PATCH] Fix backup script: tar.gz output, lockfile, correct log path, install at /usr/local/bin - Renamed output to jarvis_backup_TIMESTAMP.tar.gz (admin panel pattern) - Log now goes to /var/backups/jarvis/backup.log (admin panel reads this) - Lockfile at /var/backups/jarvis/backup.lock (prevents concurrent runs) - tmpdir + trap cleanup for safe temp handling - Install at /usr/local/bin/jarvis-backup.sh (admin panel trigger path) --- deploy/jarvis-backup.sh | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/deploy/jarvis-backup.sh b/deploy/jarvis-backup.sh index 72dfef4..7fd61a7 100644 --- a/deploy/jarvis-backup.sh +++ b/deploy/jarvis-backup.sh @@ -1,27 +1,31 @@ #!/bin/bash -# JARVIS database backup — runs daily, 7-day retention -# Lives in repo at /var/www/jarvis/deploy/jarvis-backup.sh - +# JARVIS backup — DB dump as tar.gz, admin-panel compatible BACKUP_DIR="/var/backups/jarvis" -LOG="/var/log/jarvis/backup.log" +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/${DB_NAME}_${TIMESTAMP}.sql.gz" +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" -echo "[$(date)] Starting backup..." >> "$LOG" +cleanup() { rm -rf "$TMPDIR"; rm -f "$LOCK"; } +trap cleanup EXIT -if mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$OUTFILE"; then +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)] Backup OK: $OUTFILE ($SIZE)" >> "$LOG" + echo "[$(date '+%Y-%m-%d %H:%M:%S')] Backup OK: $(basename "$OUTFILE") ($SIYE)" >> "$LOG" else - echo "[$(date)] ERROR: mysqldump failed" >> "$LOG" + echo "[$(date '+%Y-%m-%d %H:%M:%S')] 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" +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" \ No newline at end of file