#!/usr/bin/env bash set -euo pipefail if [[ -z "${DATABASE_URL:-}" ]]; then echo "DATABASE_URL is required" exit 1 fi BACKUP_DIR="${BACKUP_DIR:-./backups/postgres}" RETENTION_DAYS="${RETENTION_DAYS:-7}" TIMESTAMP="$(date -u +%Y%m%dT%H%M%SZ)" mkdir -p "$BACKUP_DIR" echo "Creating logical backup..." pg_dump "$DATABASE_URL" --format=custom --file="${BACKUP_DIR}/fiddy_${TIMESTAMP}.dump" echo "Creating globals backup..." pg_dumpall "$DATABASE_URL" --globals-only > "${BACKUP_DIR}/fiddy_globals_${TIMESTAMP}.sql" echo "Pruning backups older than ${RETENTION_DAYS} days..." find "$BACKUP_DIR" -type f -name "fiddy_*" -mtime "+${RETENTION_DAYS}" -delete echo "Backup complete: ${BACKUP_DIR}"