20 lines
806 B
Bash
20 lines
806 B
Bash
#!/bin/sh
|
|
set -eu
|
|
cd "$(dirname "$0")/.."
|
|
env_file=${1:?Usage: sh scripts/backup-cluster-metadata.sh /path/to/cluster.env /path/to/metadata.dump}
|
|
output=${2:?Usage: sh scripts/backup-cluster-metadata.sh /path/to/cluster.env /path/to/metadata.dump}
|
|
if [ -e "$output" ]; then
|
|
echo "Backup destination already exists" >&2
|
|
exit 1
|
|
fi
|
|
umask 077
|
|
temporary=$(mktemp "${output}.tmp.XXXXXX")
|
|
trap 'rm -f "$temporary"' EXIT
|
|
docker compose --env-file "$env_file" -f compose.cluster.yaml exec -T metadata \
|
|
pg_dump -U objectstore -d objectstore --format=custom --no-owner --no-acl > "$temporary"
|
|
test -s "$temporary"
|
|
docker compose --env-file "$env_file" -f compose.cluster.yaml exec -T metadata \
|
|
pg_restore --list < "$temporary" > /dev/null
|
|
mv "$temporary" "$output"
|
|
echo "Metadata backup written to $output"
|