diff --git a/deploy.sh b/deploy.sh index 9d41a4b..951e914 100644 --- a/deploy.sh +++ b/deploy.sh @@ -396,15 +396,55 @@ do_deploy() { fi # ----- 准备部署目录 ----- - print_step "准备部署目录..." - mkdir -p "$DEPLOY_DIR" - mkdir -p "$DATA_DIR" +print_step "准备部署目录..." +mkdir -p "$DEPLOY_DIR" +mkdir -p "$DATA_DIR" - # ----- 构建 Docker 镜像 ----- - print_step "构建 Docker 镜像..." - docker build --no-cache \ - -t "${IMAGE_NAME}:${IMAGE_TAG}" \ - . +# ----- 检测并迁移旧版本文件(从根目录迁移到 data/)----- +print_step "检测旧版本文件..." + +OLD_DB="${DEPLOY_DIR}/frpc-console.db" +OLD_TOML="${DEPLOY_DIR}/frpc.toml" +OLD_LOG="${DEPLOY_DIR}/frpc.log" +OLD_PID="${DEPLOY_DIR}/frpc.pid" +OLD_VERSION="${DEPLOY_DIR}/version.ini" +NEW_DB="${DATA_DIR}/frpc-console.db" + +# 如果根目录有旧数据库文件,但 data/ 目录没有,执行迁移 +if [ -f "$OLD_DB" ] && [ ! -f "$NEW_DB" ]; then + print_warn "检测到旧版本数据库文件在根目录,将迁移到 data/ 子目录" + + # 备份旧文件 + BACKUP_OLD_DIR="${DEPLOY_DIR}/.old_backup_$(date +%Y%m%d_%H%M%S)" + mkdir -p "$BACKUP_OLD_DIR" + + for file in frpc-console.db frpc.toml frpc.log frpc.pid version.ini; do + if [ -f "${DEPLOY_DIR}/${file}" ]; then + cp "${DEPLOY_DIR}/${file}" "${BACKUP_OLD_DIR}/" 2>/dev/null || true + print_info " 已备份: ${file}" + fi + done + + # 复制文件到 data/ 目录 + for file in frpc-console.db frpc.toml frpc.log frpc.pid version.ini; do + if [ -f "${DEPLOY_DIR}/${file}" ]; then + cp "${DEPLOY_DIR}/${file}" "${DATA_DIR}/" 2>/dev/null || true + print_info " 已迁移: ${file} → data/" + fi + done + + print_success "旧文件已迁移到 data/ 目录" + print_info "旧文件备份位置: ${BACKUP_OLD_DIR}" + print_info "确认服务正常后,可手动删除备份目录" +else + print_info "未检测到需要迁移的旧文件" +fi + +# ----- 构建 Docker 镜像 ----- +print_step "构建 Docker 镜像..." +docker build --no-cache \ + -t "${IMAGE_NAME}:${IMAGE_TAG}" \ + . if [ $? -ne 0 ]; then print_error "Docker 构建失败" exit 1