docs: add Linux to Windows migration guide and packaging script

This commit is contained in:
2026-05-22 12:32:55 +08:00
parent 9e7ada1ec3
commit e83f28d646
2 changed files with 489 additions and 22 deletions
Regular → Executable
+84 -22
View File
@@ -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,解压后即可查看。"