#!/usr/bin/env sh set -eu COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.production.yml}" ENV_FILE="${ENV_FILE:-.env.production}" BACKUP_DIR="${BACKUP_DIR:-./data/backups}" RETENTION_DAYS="${BACKUP_RETENTION_DAYS:-14}" SYNOLOGY_BACKUP_DIR="${SYNOLOGY_BACKUP_DIR:-}" timestamp="$(date -u +%Y%m%d-%H%M%S)" backup_file="postgres-${timestamp}.dump" mkdir -p "${BACKUP_DIR}" docker compose --env-file "${ENV_FILE}" -f "${COMPOSE_FILE}" exec -T postgres sh -lc \ "PGPASSWORD=\"\$POSTGRES_PASSWORD\" pg_dump -U \"\$POSTGRES_USER\" -d \"\$POSTGRES_DB\" -Fc" \ > "${BACKUP_DIR}/${backup_file}" find "${BACKUP_DIR}" -type f -name 'postgres-*.dump' -mtime +"${RETENTION_DAYS}" -delete if [ -n "${SYNOLOGY_BACKUP_DIR}" ]; then mkdir -p "${SYNOLOGY_BACKUP_DIR}" cp "${BACKUP_DIR}/${backup_file}" "${SYNOLOGY_BACKUP_DIR}/${backup_file}" fi echo "Created backup: ${BACKUP_DIR}/${backup_file}"