#!/usr/bin/env bash # Восстанавливает данные из архива переноса на новом устройстве. # Порядок: скопировать папку проекта + архив, затем ./scripts/restore.sh <архив> set -euo pipefail cd "$(dirname "$0")/.." BK="${1:?Использование: $0 }" [ -f "$BK" ] || { echo "Файл не найден: $BK"; exit 1; } echo ">> Сборка и запуск стека" docker compose up -d --build echo ">> Ожидание БД" for _ in $(seq 1 60); do docker compose exec -T db pg_isready -U app -d whereldo >/dev/null 2>&1 && break sleep 1 done TMP=$(mktemp -d) trap 'rm -rf "$TMP"' EXIT echo ">> Распаковка архива" tar -xzf "$BK" -C "$TMP" echo ">> Остановка приложения" docker compose stop app echo ">> Восстановление БД (чистая схема)" docker compose exec -T db psql -U app -d whereldo -c 'DROP SCHEMA public CASCADE; CREATE SCHEMA public;' >/dev/null gzip -dc "$TMP/db.sql.gz" | docker compose exec -T db psql -U app -d whereldo echo ">> Загрузка файлов в хранилище" docker compose start app for _ in $(seq 1 30); do docker compose exec -T app true >/dev/null 2>&1 && break sleep 1 done docker compose exec -T app rm -rf /tmp/whatido-import docker compose exec -T app mkdir -p /tmp/whatido-import docker cp "$TMP/_uploads/." "whatido-app-1:/tmp/whatido-import/" docker compose exec -T app node scripts/storage-sync.js import /tmp/whatido-import docker compose exec -T app rm -rf /tmp/whatido-import echo ">> Запуск приложения" docker compose start app echo "Готово. Проверка: https://localhost:3443 (админка /dashboard.html, пароль из .env)"