51 lines
2.0 KiB
Bash
51 lines
2.0 KiB
Bash
|
|
#!/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
|