47 行
1.3 KiB
Bash
47 行
1.3 KiB
Bash
#!/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
|