EcoSpecies-Atlas/scripts/backup-postgres.sh

29 lines
681 B
Bash

#!/bin/sh
set -eu
ROOT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
ENV_FILE="${ECOSPECIES_ENV_FILE:-$ROOT_DIR/docs/docker-compose-traefik.env}"
COMPOSE_FILE="${ECOSPECIES_COMPOSE_FILE:-$ROOT_DIR/docs/docker-compose-traefik.yml}"
OUTPUT_FILE="${1:-$ROOT_DIR/ecospecies-backup.sql}"
if [ ! -f "$ENV_FILE" ]; then
echo "Missing env file: $ENV_FILE" >&2
exit 1
fi
set -a
. "$ENV_FILE"
set +a
DB_USER="${ECOSPECIES_DB_USER:-ecospecies}"
DB_NAME="${ECOSPECIES_DB_NAME:-ecospecies}"
docker compose \
--env-file "$ENV_FILE" \
-f "$COMPOSE_FILE" \
exec -T db \
pg_dump -U "$DB_USER" "$DB_NAME" \
> "$OUTPUT_FILE"
printf 'Backup written to %s\n' "$OUTPUT_FILE"