Backups
The scripts/backup.sh script performs daily backups of the two critical data stores:
PostgreSQL database — dumped with
pg_dumpand uploaded to Swift object storage. The last 30 daily dumps are retained.Media files (
django_mediavolume) — snapshotted with restic into a Swift-backed restic repository. 30 daily and 12 monthly snapshots are retained.
Running a backup
The script is intended to run daily via cron but can also be triggered manually:
sudo scripts/backup.sh
Configuration
The configuration block at the top of scripts/backup.sh controls the database container name, Swift container name, restic repository path, and the path to the django_media bind mount. Edit these to match your deployment before first use.
The script expects OpenStack credentials to be sourced from an RC file and a RESTIC_PASSWORD environment variable to be set.
Restore
To restore the database, download the desired dump from Swift and pipe it into pg_restore:
docker exec -i ywangvaster-db pg_restore \
-U ywangvaster -d ywangvaster --clean --if-exists \
< /tmp/restore.pgdump
To restore media files, use restic:
restic -r swift:vaster-backups:/restic-media restore latest --target /path/to/django_media