Files
termi-blog/deploy/scripts/backup/backup-postgres.sh

20 lines
598 B
Bash

#!/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}"