Researcher / scripts /backup-db.sh
amarck's picture
Initial commit: Research Intelligence System
a0f27fa
raw
history blame contribute delete
898 Bytes
#!/bin/bash
# Daily SQLite backup — safe online backup using .backup command
# Add to crontab: 0 3 * * * /path/to/researcher/scripts/backup-db.sh
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
DB_PATH="${PROJECT_DIR}/data/researcher.db"
BACKUP_DIR="${PROJECT_DIR}/data/backups"
KEEP_DAYS=14
mkdir -p "$BACKUP_DIR"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
BACKUP_FILE="$BACKUP_DIR/researcher-$TIMESTAMP.db"
# Use SQLite online backup (safe with WAL mode)
python3 -c "
import sqlite3, shutil
src = sqlite3.connect('$DB_PATH')
dst = sqlite3.connect('$BACKUP_FILE')
src.backup(dst)
dst.close()
src.close()
"
# Compress
gzip "$BACKUP_FILE"
echo "Backup: ${BACKUP_FILE}.gz ($(du -h "${BACKUP_FILE}.gz" | cut -f1))"
# Prune old backups
find "$BACKUP_DIR" -name "researcher-*.db.gz" -mtime +"$KEEP_DAYS" -delete
echo "Pruned backups older than $KEEP_DAYS days"