#!/usr/bin/env bash # بازگردانی پشتیبان دیتابیس — از بازگردانی در محیط واقعی قبلش تمرین کنید! # # bash scripts/restore.sh backups/db-20260918-030000.sql.gz # # احتیاط: محتوای فعلی دیتابیس با محتوای پشتیبان جایگزین می‌شود. # تصاویر MinIO هم اگر پوشه images-* همان زمان را دارید: # docker compose run --rm -v "$(pwd)/backups:/backups" --entrypoint sh mc -c \ # "mc alias set local http://minio:9000 \"\$MINIO_ROOT_USER\" \"\$MINIO_ROOT_PASSWORD\" && \ # mc mirror --overwrite /backups/images-20260918-030000 local/aramesh-media" set -euo pipefail cd "$(dirname "$0")/.." if [ $# -ne 1 ]; then echo "استفاده: bash scripts/restore.sh backups/db-<زمان>.sql.gz" >&2 exit 1 fi SQL_GZ="$1" if [ ! -f "$SQL_GZ" ]; then echo "خطا: فایل ${SQL_GZ} پیدا نشد" >&2 exit 1 fi # راستی‌آزمایی چک‌سام اگر کنار فایل هست if [ -f "${SQL_GZ}.sha256" ]; then sha256sum -c "${SQL_GZ}.sha256" fi echo "[restore] هشدار: محتوای فعلی arameshplaza جایگزین می‌شود. ۵ ثانیه فرصت لغو (Ctrl+C)…" sleep 5 gunzip -c "$SQL_GZ" | docker compose exec -T db psql -v ON_ERROR_STOP=1 -U aramesh -d arameshplaza echo "[restore] ✔ بازگردانی تمام شد — حالا: docker compose restart backend"