#!/usr/bin/env bash set -euo pipefail BACKUP_DIR="${BACKUP_DIR:-./backups/postgres}" RETENTION_DAYS="${RETENTION_DAYS:-14}" TIMESTAMP="$(date -u +%Y%m%dT%H%M%SZ)" FILE_PATH="${BACKUP_DIR}/postgres-${TIMESTAMP}.dump" if [[ -z "${DATABASE_URL:-}" ]]; then echo "DATABASE_URL is required" >&2 exit 1 fi mkdir -p "${BACKUP_DIR}" pg_dump --format=custom --file="${FILE_PATH}" "${DATABASE_URL}" ln -sfn "$(basename "${FILE_PATH}")" "${BACKUP_DIR}/latest.dump" find "${BACKUP_DIR}" -type f -name 'postgres-*.dump' -mtime +"${RETENTION_DAYS}" -delete echo "Postgres backup written to ${FILE_PATH}"