16 lines
879 B
Bash
Executable File
16 lines
879 B
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
destination="${1:-backups/postgres}"
|
|
case "$destination" in ""|"/"|".") echo "Unsafe backup destination: $destination" >&2; exit 1;; esac
|
|
latest="$(find "$destination" -maxdepth 1 -type f -name 'mobilityops-*.dump' | sort -r | head -n 1)"
|
|
[ -n "$latest" ] || { echo "No MobilityOps backup found" >&2; exit 1; }
|
|
[ -f "$latest.sha256" ] || { echo "Checksum missing for $latest" >&2; exit 1; }
|
|
(cd "$destination" && sha256sum -c "$(basename "$latest.sha256")")
|
|
docker compose -p "${COMPOSE_PROJECT_NAME:-mobilityops}" \
|
|
-f compose.yaml -f compose.unraid.yaml exec -T db pg_restore --list < "$latest" > /dev/null
|
|
docker compose -p "${COMPOSE_PROJECT_NAME:-mobilityops}" \
|
|
-f compose.yaml -f compose.unraid.yaml exec -T backup \
|
|
/opt/mobilityops/restore-drill-postgres.sh "/backups/$(basename "$latest")"
|
|
printf 'Verified and restore-drilled: %s\n' "$latest"
|