docs: add Linux to Windows migration guide and packaging script
This commit is contained in:
Regular → Executable
+84
-22
@@ -1,28 +1,90 @@
|
||||
# scripts/migrate.sh —— 服务端迁移脚本
|
||||
#!/bin/bash
|
||||
set -e
|
||||
# ============================================================
|
||||
# Cyrene 项目迁移打包脚本
|
||||
# 用途: 在 Linux 环境下生成干净的源代码压缩包,
|
||||
# 用于迁移到 Windows 平台。
|
||||
# 用法: bash scripts/migrate.sh [输出目录]
|
||||
# ============================================================
|
||||
|
||||
echo "📦 昔涟 - 服务迁移脚本"
|
||||
echo "=============================="
|
||||
set -euo pipefail
|
||||
|
||||
# 1. 停止服务
|
||||
echo "1/4 停止当前服务..."
|
||||
docker compose down
|
||||
# 输出目录,默认为 /tmp
|
||||
OUTPUT_DIR="${1:-/tmp}"
|
||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
ARCHIVE_NAME="cyrene-source-${TIMESTAMP}.tar.gz"
|
||||
PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
|
||||
# 2. 备份数据
|
||||
echo "2/4 备份数据目录..."
|
||||
tar -czf "cyrene_backup_$(date +%Y%m%d_%H%M%S).tar.gz" backend/data/
|
||||
echo "=== Cyrene 源码打包 ==="
|
||||
echo "项目根目录: ${PROJECT_ROOT}"
|
||||
echo "输出文件: ${OUTPUT_DIR}/${ARCHIVE_NAME}"
|
||||
echo ""
|
||||
|
||||
# 3. 复制到新服务器 (手动步骤提示)
|
||||
# echo "3/4 请将以下文件复制到新服务器:"
|
||||
# echo " - 整个项目目录"
|
||||
# echo " - 或至少: docker-compose.yml, backend/data/, .env"
|
||||
# echo ""
|
||||
# echo " rsync -avz ./ user@new-server:/opt/cyrene-ai/"
|
||||
# 确保输出目录存在
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
# 4. 在新服务器上启动
|
||||
# echo "4/4 在新服务器上执行:"
|
||||
# echo " cd /opt/cyrene-ai"
|
||||
# echo " docker compose up -d"
|
||||
# echo ""
|
||||
# echo "✅ 迁移完成!昔涟的记忆完好无损~♪"
|
||||
cd "${PROJECT_ROOT}"
|
||||
|
||||
echo "正在打包..."
|
||||
|
||||
# 打包源码,排除二进制和编译产物
|
||||
# --exclude 规则说明:
|
||||
# *.exe - Windows 可执行文件(旧的编译产物)
|
||||
# backend/*/main - Go 编译生成的 Linux 二进制
|
||||
# backend/*/cmd/* (非.go) - 各服务的编译产物
|
||||
# node_modules - Node.js 依赖
|
||||
# dist - 前端构建产物
|
||||
# .env - 敏感配置文件
|
||||
# *.log / logs/ - 日志文件
|
||||
# tmp/ - 临时文件
|
||||
# .git/objects/refs/logs - Git 内部数据(保留 HEAD 和 config)
|
||||
# package-lock.json - 锁文件(跨平台重新生成)
|
||||
#
|
||||
tar -czf "${OUTPUT_DIR}/${ARCHIVE_NAME}" \
|
||||
--exclude='*.exe' \
|
||||
--exclude='main' \
|
||||
--exclude='backend/ai-core/main' \
|
||||
--exclude='backend/ai-core/cmd/ai-core' \
|
||||
--exclude='backend/gateway/main' \
|
||||
--exclude='backend/gateway/cmd/main' \
|
||||
--exclude='backend/memory-service/main' \
|
||||
--exclude='backend/memory-service/cmd/memory-service' \
|
||||
--exclude='backend/tool-engine/cmd/tool-engine' \
|
||||
--exclude='backend/iot-debug-service/cmd/iot-debug-service' \
|
||||
--exclude='backend/voice-service/cmd/voice-service' \
|
||||
--exclude='node_modules' \
|
||||
--exclude='frontend/web/node_modules' \
|
||||
--exclude='frontend/web/dist' \
|
||||
--exclude='frontend/node_modules' \
|
||||
--exclude='devtools/node_modules' \
|
||||
--exclude='frontend/packages/*/node_modules' \
|
||||
--exclude='.env' \
|
||||
--exclude='backend/.env' \
|
||||
--exclude='*.log' \
|
||||
--exclude='logs/' \
|
||||
--exclude='debug/logs/' \
|
||||
--exclude='debug/logs/chromium/' \
|
||||
--exclude='tmp/' \
|
||||
--exclude='.git/objects' \
|
||||
--exclude='.git/refs' \
|
||||
--exclude='.git/logs' \
|
||||
--exclude='package-lock.json' \
|
||||
--exclude='frontend/web/package-lock.json' \
|
||||
--exclude='frontend/package-lock.json' \
|
||||
--exclude='frontend/packages/*/package-lock.json' \
|
||||
.
|
||||
|
||||
echo ""
|
||||
echo "✅ 打包完成!"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "文件: ${OUTPUT_DIR}/${ARCHIVE_NAME}"
|
||||
echo "大小: $(du -h "${OUTPUT_DIR}/${ARCHIVE_NAME}" | cut -f1)"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
echo "=== 迁移到 Windows 的步骤 ==="
|
||||
echo "1. 将 ${ARCHIVE_NAME} 传输到 Windows 机器(U盘 / 网络共享 / scp)"
|
||||
echo "2. 在 Windows 上解压: tar -xzf ${ARCHIVE_NAME}"
|
||||
echo "3. 阅读 Migration.md 了解完整迁移流程"
|
||||
echo "4. 复制 backend/.env.example 为 backend/.env 并填入实际配置"
|
||||
echo "5. 编译并启动服务(参考 Migration.md 第 6 章)"
|
||||
echo ""
|
||||
echo "提示: 压缩包中已包含文档 docs/ 和 Migration.md,解压后即可查看。"
|
||||
|
||||
Reference in New Issue
Block a user