From 156b2101848c791e9d6f464c2acffdbbd951f9b1 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 7 Jul 2026 10:54:24 -0500 Subject: [PATCH] =?UTF-8?q?jarvis-backup.sh:=20was=20DB-only,=20now=20also?= =?UTF-8?q?=20backs=20up=20/var/www/jarvis,=20/opt/jarvis-arc,=20nginx=20s?= =?UTF-8?q?ite=20config,=20systemd=20unit,=20and=20root=20crontab=20?= =?UTF-8?q?=E2=80=94=20a=20DB=20dump=20alone=20was=20useless=20without=20t?= =?UTF-8?q?he=20app=20code=20and=20daemon=20needed=20to=20actually=20resto?= =?UTF-8?q?re=20JARVIS.=20Also=20fixed=20a=20typo=20(SIYE->SIZE)=20that=20?= =?UTF-8?q?silently=20broke=20the=20backup-size=20log=20line.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/jarvis-backup.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/deploy/jarvis-backup.sh b/deploy/jarvis-backup.sh index 7fd61a7..652ef1a 100755 --- a/deploy/jarvis-backup.sh +++ b/deploy/jarvis-backup.sh @@ -1,5 +1,9 @@ #!/bin/bash -# JARVIS backup — DB dump as tar.gz, admin-panel compatible +# JARVIS backup — DB dump + all files needed to actually restore JARVIS, as tar.gz +# Fixed 2026-07-07: this only ever backed up the MySQL database. If this VM were +# lost, the DB alone is useless without the application code, the reactor daemon, +# its systemd unit, and the nginx site config — none of which were captured. Also +# fixed a typo ($SIYE -> $SIZE) that silently broke the size line in the log. BACKUP_DIR="/var/backups/jarvis" LOG="$BACKUP_DIR/backup.log" LOCK="$BACKUP_DIR/backup.lock" @@ -18,9 +22,16 @@ 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 + mkdir -p "$TMPDIR/files/etc" + cp -a /var/www/jarvis "$TMPDIR/files/var-www-jarvis" + cp -a /opt/jarvis-arc "$TMPDIR/files/opt-jarvis-arc" + cp -a /etc/nginx/sites-enabled/jarvis "$TMPDIR/files/etc/nginx-site-jarvis" 2>>"$LOG" + cp -a /etc/systemd/system/jarvis-arc.service "$TMPDIR/files/etc/jarvis-arc.service" 2>>"$LOG" + crontab -l > "$TMPDIR/files/etc/root-crontab.txt" 2>>"$LOG" + + tar -czf "$OUTFILE" -C "$TMPDIR" jarvis_db.sql files SIZE=$(du -sh "$OUTFILE" | cut -f1) - echo "[$(date '+%Y-%m-%d %H:%M:%S')] Backup OK: $(basename "$OUTFILE") ($SIYE)" >> "$LOG" + echo "[$(date '+%Y-%m-%d %H:%M:%S')] Backup OK: $(basename "$OUTFILE") ($SIZE)" >> "$LOG" else echo "[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: mysqldump failed" >> "$LOG" exit 1