Backup & Restore
What Gets Backed Up
| Component | Script Flag | Tool | Description |
|---|---|---|---|
| Database | --db | pg_dump / pg_restore | All PostgreSQL data |
| Object storage | --storage | aws s3 sync or mc mirror | Scripts, binaries, reports in MinIO/S3 |
| Configuration | --config | tar + openssl | .env, certs, Docker configs — encrypted at rest |
Prerequisites
# PostgreSQL client toolssudo apt-get install postgresql-client-16
# MinIO Client (for --storage)curl -O https://dl.min.io/client/mc/release/linux-amd64/mcchmod +x mc && sudo mv mc /usr/local/bin/
# openssl (typically pre-installed)openssl versionEnvironment Variables
Set before running backup scripts:
# Required for --dbexport DATABASE_URL="postgresql://breeze:password@localhost:5432/breeze"
# Required for --configexport BACKUP_ENCRYPTION_KEY="a-strong-passphrase-at-least-32-chars"
# Required for --storageexport S3_ENDPOINT="http://localhost:9000"export S3_BUCKET="breeze"export S3_ACCESS_KEY="minioadmin"export S3_SECRET_KEY="minioadmin"
# Optionalexport BACKUP_DIR="/var/backups/breeze" # default: /var/backups/breezeexport BACKUP_RETENTION_DAYS="30" # default: 30Manual Backup
# Full backup (all components)./scripts/backup.sh --all
# Database only./scripts/backup.sh --db
# Object storage only./scripts/backup.sh --storage
# Configuration only (encrypted)./scripts/backup.sh --configBackups are stored in $BACKUP_DIR with timestamps:
/var/backups/breeze/├── 2026-02-11T12:00:00Z/│ ├── breeze-db.dump│ ├── breeze-storage.tar.gz│ └── breeze-config.tar.gz.encAutomated Backups
Add a cron job for daily backups:
# Edit crontabcrontab -e
# Daily full backup at 2 AM0 2 * * * /path/to/breeze/scripts/backup.sh --all >> /var/log/breeze-backup.log 2>&1Restore
# Restore database./scripts/restore.sh --db /var/backups/breeze/2026-02-11T12:00:00Z/breeze-db.dump
# Restore storage./scripts/restore.sh --storage /var/backups/breeze/2026-02-11T12:00:00Z/breeze-storage.tar.gz
# Restore configuration (prompts for encryption key)./scripts/restore.sh --config /var/backups/breeze/2026-02-11T12:00:00Z/breeze-config.tar.gz.encRetention
Backups older than BACKUP_RETENTION_DAYS (default: 30) are automatically pruned during each backup run.
Offsite Backups
For disaster recovery, sync backups to a remote location:
# Sync to S3/R2aws s3 sync /var/backups/breeze s3://breeze-backups/ --delete
# Sync to remote serverrsync -avz /var/backups/breeze/ backup-server:/backups/breeze/