bytelyst-devops-tools/scripts/open-notebook-pilot/restore-test.sh
2026-06-28 18:56:00 +00:00

35 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
if [[ $# -ne 1 ]]; then
echo "Usage: $0 /opt/bytelyst/open-notebook-pilot/backups/open-notebook-pilot-YYYYmmddTHHMMSSZ.tar.gz" >&2
exit 2
fi
BACKUP=$1
COMPOSE_FILE=${COMPOSE_FILE:-/opt/bytelyst/learning_ai_devops_tools/deployments/open-notebook-pilot/docker-compose.yml}
ENV_FILE=${ENV_FILE:-/etc/bytelyst/open-notebook-pilot.env}
RESTORE_ROOT=${RESTORE_ROOT:-/opt/bytelyst/open-notebook-pilot/restore-test}
[[ -f "$BACKUP" ]] || { echo "Backup not found: $BACKUP" >&2; exit 1; }
mkdir -p "$RESTORE_ROOT"
chmod 700 "$RESTORE_ROOT"
rm -rf "$RESTORE_ROOT/extracted"
mkdir -p "$RESTORE_ROOT/extracted"
tar -xzf "$BACKUP" -C "$RESTORE_ROOT/extracted"
for required in \
"$RESTORE_ROOT/extracted/opt/bytelyst/open-notebook-pilot/surreal_data" \
"$RESTORE_ROOT/extracted/opt/bytelyst/open-notebook-pilot/notebook_data" \
"$RESTORE_ROOT/extracted/etc/bytelyst/open-notebook-pilot.env"; do
[[ -e "$required" ]] || { echo "Missing expected restore payload: $required" >&2; exit 1; }
done
# Verify the live compose can be parsed with the protected env file; this is a
# non-destructive restore readiness check. Actual restore requires planned
# downtime and replacing DATA_DIR contents from the extracted payload.
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" config --quiet
printf 'restore_test=ok\nbackup=%s\nrestore_root=%s\n' "$BACKUP" "$RESTORE_ROOT/extracted"