EcoSpecies-Atlas/scripts/restore-postgres.sh

38 lines
824 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}"
INPUT_FILE="${1:-}"
if [ -z "$INPUT_FILE" ]; then
echo "Usage: $0 <sql-backup-file>" >&2
exit 1
fi
if [ ! -f "$ENV_FILE" ]; then
echo "Missing env file: $ENV_FILE" >&2
exit 1
fi
if [ ! -f "$INPUT_FILE" ]; then
echo "Missing backup file: $INPUT_FILE" >&2
exit 1
fi
set -a
. "$ENV_FILE"
set +a
DB_USER="${ECOSPECIES_DB_USER:-ecospecies}"
DB_NAME="${ECOSPECIES_DB_NAME:-ecospecies}"
cat "$INPUT_FILE" | docker compose \
--env-file "$ENV_FILE" \
-f "$COMPOSE_FILE" \
exec -T db \
psql -U "$DB_USER" "$DB_NAME"
printf 'Restore completed from %s\n' "$INPUT_FILE"