20 lines
571 B
Bash
20 lines
571 B
Bash
|
|
#!/bin/sh
|
||
|
|
# Snapshot the canonical SQLite DB into data/backups/, keeping the last 14.
|
||
|
|
# Uses sqlite3 .backup (safe against a live WAL). Run from the project root,
|
||
|
|
# e.g. weekly via launchd/cron, or by hand before risky migrations.
|
||
|
|
set -eu
|
||
|
|
cd "$(dirname "$0")/.."
|
||
|
|
|
||
|
|
DB=data/garmin.db
|
||
|
|
OUT=data/backups/garmin-$(date +%Y%m%d-%H%M%S).db
|
||
|
|
|
||
|
|
mkdir -p data/backups
|
||
|
|
sqlite3 "$DB" ".backup $OUT"
|
||
|
|
echo "backed up $DB -> $OUT"
|
||
|
|
|
||
|
|
# prune: keep newest 14 dated snapshots
|
||
|
|
ls -1t data/backups/garmin-*.db 2>/dev/null | tail -n +15 | while read -r f; do
|
||
|
|
rm -- "$f"
|
||
|
|
echo "pruned $f"
|
||
|
|
done
|