- Add Husky pre-commit and pre-push hooks for linting, type checking, and build validation - Fix visual hierarchy bug in the provider onboarding tutorial - Remove feedback modal - Move MinIO bucket creation logic to before app startup - Wire MiniMax audio through voice generation pipeline - Fix scene insertion issues - Fix portal tutorial modal and harden panel variant task flow
101 lines
3.5 KiB
Bash
Executable File
101 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# 存储迁移快捷脚本
|
|
# 用法: ./scripts/migrate-to-minio.sh [选项]
|
|
#
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
cd "$PROJECT_DIR"
|
|
|
|
# 颜色输出
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${GREEN}══════════════════════════════════════════════════════════${NC}"
|
|
echo -e "${GREEN} Local Storage → MinIO Migration Tool${NC}"
|
|
echo -e "${GREEN}══════════════════════════════════════════════════════════${NC}"
|
|
echo
|
|
|
|
# 检查 MinIO 是否运行
|
|
if ! curl -sf http://127.0.0.1:19000/minio/health/live >/devdev/null 2>&1; then
|
|
echo -e "${YELLOW}⚠ MinIO 未检测到在 127.0.0.1:19000${NC}"
|
|
echo " 请先启动 MinIO: docker compose up -d minio"
|
|
echo
|
|
read -p "是否尝试自动启动 MinIO? [Y/n] " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
|
|
docker compose up -d minio
|
|
echo -e "${GREEN}✓ MinIO 启动中,等待 5 秒...${NC}"
|
|
sleep 5
|
|
else
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo -e "${GREEN}✓ MinIO 服务正常${NC}"
|
|
echo
|
|
|
|
# 检查本地数据目录
|
|
if [ ! -d "./data/uploads" ]; then
|
|
echo -e "${YELLOW}⚠ 本地数据目录 ./data/uploads 不存在${NC}"
|
|
echo " 无需迁移"
|
|
exit 0
|
|
fi
|
|
|
|
FILE_COUNT=$(find ./data/uploads -type f 2>/dev/null | wc -l)
|
|
if [ "$FILE_COUNT" -eq 0 ]; then
|
|
echo -e "${YELLOW}⚠ 本地数据目录为空${NC}"
|
|
echo " 无需迁移"
|
|
exit 0
|
|
fi
|
|
|
|
echo "本地文件数: $FILE_COUNT"
|
|
echo
|
|
|
|
# 运行干运行模式预览
|
|
echo -e "${YELLOW}▶ 干运行预览 (Dry Run)...${NC}"
|
|
MIGRATE_DRY_RUN=true npx tsx scripts/migrate-to-minio.ts
|
|
echo
|
|
|
|
# 确认执行
|
|
read -p "是否开始实际迁移? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
echo -e "${YELLOW}已取消迁移${NC}"
|
|
exit 0
|
|
fi
|
|
|
|
echo
|
|
echo -e "${GREEN}▶ 开始迁移...${NC}"
|
|
npx tsx scripts/migrate-to-minio.ts
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo
|
|
echo -e "${GREEN}══════════════════════════════════════════════════════════${NC}"
|
|
echo -e "${GREEN} 迁移成功完成!${NC}"
|
|
echo -e "${GREEN}══════════════════════════════════════════════════════════${NC}"
|
|
echo
|
|
echo "后续步骤:"
|
|
echo " 1. 验证 MinIO 控制台: http://127.0.0.1:19001"
|
|
echo " 账号: minioadmin / minioadmin"
|
|
echo " 2. 更新 .env: STORAGE_TYPE=minio"
|
|
echo " 3. 重启应用: docker compose restart app"
|
|
echo " 4. 测试图片/视频访问"
|
|
echo " 5. 确认无误后删除本地数据: rm -rf ./data/uploads"
|
|
echo
|
|
else
|
|
echo
|
|
echo -e "${RED}══════════════════════════════════════════════════════════${NC}"
|
|
echo -e "${RED} 迁移失败${NC}"
|
|
echo -e "${RED}══════════════════════════════════════════════════════════${NC}"
|
|
echo
|
|
echo "可重新运行继续迁移:"
|
|
echo " ./scripts/migrate-to-minio.sh"
|
|
exit 1
|
|
fi
|