Files
GTI_GERENCIADOR_FISCAL/fiscal/deploy/hub/restore_releases.sh
T
gti d21a9d1140 Add 'fiscal/' from commit '102ba84500dbd9655a0471288c3e278652593ca9'
git-subtree-dir: fiscal
git-subtree-mainline: d95165fc8f
git-subtree-split: 102ba84500
2026-09-29 14:43:23 -03:00

21 lines
1.2 KiB
Bash

#!/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 <releases_backup.tgz>" >&2; exit 2; }
FILE="$(basename "$1")"
COMPOSE="docker compose -f docker-compose.prod.yml --env-file .env"
# See backup.sh: BACKUP_DIR lives in .env, which --env-file only feeds to
# the container, not to this shell script.
if [ -f .env ]; then set -a; . ./.env; set +a; fi
[ -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"