mirror of
https://github.com/screentinker/screentinker.git
synced 2026-06-18 20:22:42 -06:00
Adds scripts/backup.sh — atomic SQLite .backup + hard-linked point-in-time content snapshots, daily (7) + monthly (12) retention, and an error log. Env-configurable (SCREENTINKER_DIR/BACKUP_DIR/DB/UPLOADS/*_KEEP*) so any self-hoster can use it; defaults target a /opt/screentinker install. Hardens two real failure modes found in production: - Content snapshots EXCLUDE uploads/screenshots/ and use rsync --link-dest instead of cp -al. The per-device *_latest.jpg screenshots are rewritten 24/7; cp -al aborts when a file mutates mid-copy and the prior script swallowed the error with 2>/dev/null, silently breaking content snapshots for ~8 weeks. rsync --link-dest hard-links unchanged files but tolerates in-flight changes; errors now go to backup.log. - Retention sorts by NAME, not mtime: rsync -a / cp -al preserve the source dir's (frozen) mtime, so ls -dt treated fresh snapshots as oldest and pruned them. The timestamp is in the dir name, so name-sort is chronological. README Backups section documents the cron setup + env knobs. Verified on prod. |
||
|---|---|---|
| .. | ||
| backup.sh | ||
| install-service.sh | ||
| migrate-multitenancy.js | ||
| parity-multitenancy.js | ||
| raspberry-pi-setup.sh | ||
| remotedisplay.service | ||
| reset-admin.js | ||
| windows-setup.bat | ||