Files
lifeos-prod/project-docs/lifeos-database-backup.md
2026-03-03 00:44:33 +00:00

1.4 KiB

Life OS - Database Backup & Restore

Quick Backup

docker exec lifeos-db pg_dump -U postgres -d lifeos_dev -Fc -f /tmp/lifeos_dev_backup.dump
docker cp lifeos-db:/tmp/lifeos_dev_backup.dump /opt/lifeos/backups/lifeos_dev_$(date +%Y%m%d_%H%M%S).dump

Quick Restore

# Drop and recreate the database, then restore
docker exec lifeos-db psql -U postgres -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'lifeos_dev' AND pid <> pg_backend_pid();"
docker exec lifeos-db psql -U postgres -c "DROP DATABASE lifeos_dev;"
docker exec lifeos-db psql -U postgres -c "CREATE DATABASE lifeos_dev;"
docker cp /opt/lifeos/backups/FILENAME.dump lifeos-db:/tmp/restore.dump
docker exec lifeos-db pg_restore -U postgres -d lifeos_dev /tmp/restore.dump
docker restart lifeos-dev

Replace FILENAME.dump with the actual backup filename.

First-Time Setup

Create the backups directory:

mkdir -p /opt/lifeos/backups

List Available Backups

ls -lh /opt/lifeos/backups/

Notes

  • -Fc = custom format (compressed, supports selective restore)
  • Backup includes schema + data + indexes + triggers + search vectors
  • Restore terminates active connections first, then drops/recreates the DB
  • Restart the app container after restore so connection pool reconnects
  • lifeos_prod is untouched by these commands (only lifeos_dev)