#!/usr/bin/env sh # Restore the release-storage volume (backup.sh's *.tgz) into the Hub. # DESTRUCTIVE for the current release binaries: asks for confirmation. The # AgentRelease metadata (version/sha256/status) lives in Postgres, not here — # restore that separately with restore.sh from a dump taken around the same time. # ./restore_releases.sh ./backups/gti_fiscal_releases_20260923_224551.tgz set -eu [ $# -eq 1 ] || { echo "usage: $0 " >&2; exit 2; } FILE="$(basename "$1")" COMPOSE="docker compose -f docker-compose.prod.yml --env-file .env" [ -s "${BACKUP_DIR:-./backups}/$FILE" ] || { echo "backup not found in ${BACKUP_DIR:-./backups}: $FILE" >&2; exit 1; } printf "This REPLACES the current release-storage contents with %s. Type RESTORE to continue: " "$FILE" read -r answer [ "$answer" = "RESTORE" ] || { echo "aborted"; exit 1; } $COMPOSE exec -T fiscal-hub sh -c 'rm -rf /app/data/releases && mkdir -p /app/data/releases' $COMPOSE exec -T fiscal-hub tar -C /app/data -xz < "${BACKUP_DIR:-./backups}/$FILE" echo "restore ok: $FILE"