mirror of
https://github.com/myronblair/jarvis
synced 2026-07-27 16:22:55 -05:00
d6a1fc9456
- 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)
31 lines
1.1 KiB
Bash
31 lines
1.1 KiB
Bash
#!/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" |