#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" COMPOSE_FILE="${ROOT_DIR}/deploy/docker-compose.prod.yml" BACKEND_ENV="${ROOT_DIR}/backend/.env" usage() { cat <<'EOF' 用法: ./scripts/migrate-minio-to-oss.sh [--verify|--dry-run] [--prefix 前缀] 迁移配置写入 backend/.env: STORAGE_* 当前 MinIO 源端配置 STORAGE_MIRROR_* 杭州 OSS 目标端配置 命令会复制同名 object key,不删除 MinIO 数据;可重复执行。 EOF } if [[ ! -f "${BACKEND_ENV}" ]]; then echo "未找到 backend/.env" >&2 exit 1 fi case "${1:-}" in -h|--help) usage exit 0 ;; esac exec docker compose --env-file "${BACKEND_ENV}" -f "${COMPOSE_FILE}" \ run --rm --no-deps backend /app/hfb-storage-migrate "$@"