#!/bin/bash # 将构建好的文档站同步到服务器目录 # 支持本地部署和远程部署两种模式 set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" SITE_DIR="$ROOT_DIR/site" # 部署目标配置 DEPLOY_MODE="${DEPLOY_MODE:-local}" # local 或 remote DEPLOY_SERVER="${DEPLOY_SERVER:-106.54.23.149}" DEPLOY_USER="${DEPLOY_USER:-root}" DEPLOY_DIR="${DEPLOY_DIR:-/var/www/docs.xuqinmin.com/site}" SSH_KEY="${SSH_KEY:-$HOME/.ssh/id_rsa}" if [ ! -d "$SITE_DIR" ]; then echo "错误: 未找到站点目录 $SITE_DIR" echo "请先执行: make docs-build" exit 1 fi if ! command -v rsync >/dev/null 2>&1; then echo "错误: 未检测到 rsync,请先安装 rsync" exit 1 fi case "$DEPLOY_MODE" in local) echo "本地部署模式..." mkdir -p "$DEPLOY_DIR" rsync -a --delete "$SITE_DIR"/ "$DEPLOY_DIR"/ echo "同步完成: $DEPLOY_DIR" ;; remote) echo "远程部署模式: ${DEPLOY_USER}@${DEPLOY_SERVER}:${DEPLOY_DIR}" rsync -avz --delete \ -e "ssh -i $SSH_KEY -o StrictHostKeyChecking=no" \ "$SITE_DIR"/ "${DEPLOY_USER}@${DEPLOY_SERVER}:${DEPLOY_DIR}/" echo "远程部署完成" ;; *) echo "错误: 未知的部署模式 '$DEPLOY_MODE',支持 local 或 remote" exit 1 ;; esac