DB backup script: utils/backup-postgres.sh. Defaults: 30-day retention, 500 MB total cap under <repo>/backups/. Override with BACKUP_DIR, RETENTION_DAYS, MAX_TOTAL_MB.
Container logs are rotated at 10 MB × 3 files per service (see dockers/compose.yaml).
Installs units with @REPO_ROOT@ resolved to this clone; output goes to journald:
sudo ./utils/install-backup-timer.shCheck status:
systemctl status gsad-backup-postgres.timerView logs:
journalctl -t gsad-backupAfter changing compose logging options, recreate containers so limits apply:
./utils/gsad-compose.sh up -d --force-recreatedocker inspect "$(./utils/gsad-compose.sh ps -q backend | head -1)" \
--format '{{.HostConfig.LogConfig}}'
# expect: map[max-file:3 max-size:10m]Warning
Restore during a maintenance window — stop the backend or pause writes first.
gunzip -c backups/gsad_YYYYMMDD_HHMMSS.sql.gz | ./utils/gsad-compose.sh exec -T postgres psql -U gsad gsad