Backup & Restore
SiroPing ships a one-command backup/restore pipeline with a daily automatic schedule.
Backup
sudo -u siroping /opt/siroping/venv/bin/python /opt/siroping/manage.py backup
sudo -u siroping /opt/siroping/venv/bin/python /opt/siroping/manage.py backup --list
sudo -u siroping /opt/siroping/venv/bin/python /opt/siroping/manage.py backup --verify <file>
- Backups are consistent (engine-aware: SQLite file copy,
mysqldump,pg_dump). - They live in
db/backups/. Make sure Nginx does not serve this directory. - A systemd timer runs it daily at 02:30 automatically (
siroping-backup.timer).
warning
Backups on the same disk are not a disaster-recovery plan — copy
`db/backups/` off the server regularly (offsite backup).
Restore
sudo -u siroping /opt/siroping/venv/bin/python /opt/siroping/manage.py restore db/backups/<file> --yes
- Verifies checksum and blocks restoring a different DB engine onto a live install.
- Creates a pre-restore backup first, so a bad restore is recoverable.
important
Stop `siroping-web`, `siroping-worker` and `siroping-beat` before restoring on a
live install — running processes hold the old database open.
Retention
Check history is pruned automatically: manage.py cleanup_data + a daily retention sweep
(SIROPING_DATA_RETENTION_DAYS, default 90). Open incidents and recent checks are kept.
Verify your backups
Run backup --verify <file> after every offsite copy. A backup you've never restored is a
hope, not a plan — test a restore on a scratch install before you need it.