Files
Cyrene/scripts/migrate.sh
T

91 lines
3.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ============================================================
# Cyrene 项目迁移打包脚本
# 用途: 在 Linux 环境下生成干净的源代码压缩包,
# 用于迁移到 Windows 平台。
# 用法: bash scripts/migrate.sh [输出目录]
# ============================================================
set -euo pipefail
# 输出目录,默认为 /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)"
echo "=== Cyrene 源码打包 ==="
echo "项目根目录: ${PROJECT_ROOT}"
echo "输出文件: ${OUTPUT_DIR}/${ARCHIVE_NAME}"
echo ""
# 确保输出目录存在
mkdir -p "${OUTPUT_DIR}"
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,解压后即可查看。"