Spaces:
Sleeping
Sleeping
File size: 898 Bytes
a0f27fa | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #!/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"
|