Files
the-nexus/scripts/backup_databases.sh

51 lines
2.0 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Bezalel Database Backup — MemPalace + Evennia + Fleet
# Runs nightly after re-mine completes. Keeps 7 days of rolling backups.
set -euo pipefail
BACKUP_BASE="/root/wizards/bezalel/home/backups"
DATE=$(date +%Y%m%d_%H%M%S)
LOG="/var/log/bezalel_db_backup.log"
# Sources
LOCAL_PALACE="/root/wizards/bezalel/.mempalace/palace"
FLEET_PALACE="/var/lib/mempalace/fleet"
EVENNIA_DB="/root/wizards/bezalel/evennia/bezalel_world/server/evennia.db3"
# Destinations
LOCAL_BACKUP="${BACKUP_BASE}/mempalace/mempalace_${DATE}.tar.gz"
FLEET_BACKUP="${BACKUP_BASE}/fleet/fleet_${DATE}.tar.gz"
EVENNIA_BACKUP="${BACKUP_BASE}/evennia/evennia_${DATE}.db3.gz"
log() {
echo "[$(date -Iseconds)] $1" | tee -a "$LOG"
}
log "Starting database backup cycle..."
# 1. Backup local MemPalace
tar -czf "$LOCAL_BACKUP" -C "$(dirname "$LOCAL_PALACE")" "$(basename "$LOCAL_PALACE")"
log "Local palace backed up: ${LOCAL_BACKUP} ($(du -h "$LOCAL_BACKUP" | cut -f1))"
# 2. Backup fleet MemPalace
tar -czf "$FLEET_BACKUP" -C "$(dirname "$FLEET_PALACE")" "$(basename "$FLEET_PALACE")"
log "Fleet palace backed up: ${FLEET_BACKUP} ($(du -h "$FLEET_BACKUP" | cut -f1))"
# 3. Backup Evennia DB (gzip for space)
gzip -c "$EVENNIA_DB" > "$EVENNIA_BACKUP"
log "Evennia DB backed up: ${EVENNIA_BACKUP} ($(du -h "$EVENNIA_BACKUP" | cut -f1))"
# 4. Prune backups older than 7 days
find "${BACKUP_BASE}/mempalace" -name 'mempalace_*.tar.gz' -mtime +7 -delete
find "${BACKUP_BASE}/fleet" -name 'fleet_*.tar.gz' -mtime +7 -delete
find "${BACKUP_BASE}/evennia" -name 'evennia_*.db3.gz' -mtime +7 -delete
log "Pruned backups older than 7 days"
# 5. Report counts
MP_COUNT=$(find "${BACKUP_BASE}/mempalace" -name 'mempalace_*.tar.gz' | wc -l)
FL_COUNT=$(find "${BACKUP_BASE}/fleet" -name 'fleet_*.tar.gz' | wc -l)
EV_COUNT=$(find "${BACKUP_BASE}/evennia" -name 'evennia_*.db3.gz' | wc -l)
log "Backup cycle complete. Retained: mempalace=${MP_COUNT}, fleet=${FL_COUNT}, evennia=${EV_COUNT}"
touch /var/lib/bezalel/heartbeats/db_backup.last