#!/bin/bash # 远程服务器信息 REMOTE_USER="ubuntu" REMOTE_HOST="170.106.191.35" REMOTE_DIR="/usr/local/aigrammar" BACKUP_DIR="$REMOTE_DIR/backup" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") # 配置文件环境(默认生产环境) ENV=${1:-prod} # 运行时可以传入 `dev` 或 `prod` CONFIG_FILE="conf/config.${ENV}.toml" # 检查本地文件是否存在 if [[ ! -f "bin/aigrammar" || ! -f "bin/service.sh" || ! -f "$CONFIG_FILE" ]]; then echo "❌ 关键文件不存在,请检查 bin/aigrammar, bin/service.sh, $CONFIG_FILE" exit 1 fi # 远程创建必要目录(如果不存在) echo "🔹 确保远程目录结构完整..." ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $REMOTE_DIR/{bin,conf,log,backup}" # 备份远程服务器的旧文件 echo "📂 备份远程服务器文件..." ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $BACKUP_DIR && \ [ -f $REMOTE_DIR/bin/aigrammar ] && mv $REMOTE_DIR/bin/aigrammar $BACKUP_DIR/aigrammar_$TIMESTAMP || true && \ [ -f $REMOTE_DIR/bin/service.sh ] && mv $REMOTE_DIR/bin/service.sh $BACKUP_DIR/service_$TIMESTAMP.sh || true && \ [ -f $REMOTE_DIR/conf/config.toml ] && mv $REMOTE_DIR/conf/config.toml $BACKUP_DIR/config_$TIMESTAMP.toml || true" # 复制文件到远程服务器(保持目录结构) echo "📤 复制文件到远程服务器..." scp bin/aigrammar $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/bin/ scp bin/service.sh $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/bin/ scp $CONFIG_FILE $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/conf/config.toml # 远程执行 restart echo "🔄 远程重启服务..." ssh $REMOTE_USER@$REMOTE_HOST "cd $REMOTE_DIR/bin && chmod +x service.sh && ./service.sh restart" echo "✅ 发布完成!"