← 返回 下载 deploy-watch.sh
#!/usr/bin/env bash
# ============================================================
# 自动同步:监听工作空间文件变化,一改就自动上传到远程服务器
# 用法:./deploy-watch.sh   (Ctrl+C 停止)
# 原理:每 2 秒检查一次文件修改时间,变了就 scp 上传。
#       不依赖 inotify/rsync,Git Bash / WSL / Linux 都能跑。
# ============================================================
set -u

SERVER_USER="${SERVER_USER:-root}"
SERVER_HOST="${SERVER_HOST:-your.server.com}"      # ← 改成你的服务器地址
SERVER_PATH="${SERVER_PATH:-/var/www/html/homework}"
LOCAL_FILE="$(cd "$(dirname "$0")" && pwd)/homework-workbench.html"

if [ "$SERVER_HOST" = "your.server.com" ]; then
  echo "❌ 请先编辑 deploy-watch.sh,把 SERVER_HOST 改成你的服务器地址"
  exit 1
fi

LAST=0
echo "👀 正在监听 $(basename "$LOCAL_FILE") 的变化,改完文件约 2 秒内自动上传,Ctrl+C 退出"

while true; do
  M=$(stat -c %Y "$LOCAL_FILE" 2>/dev/null || echo 0)
  if [ "$M" != "0" ] && [ "$LAST" != "0" ] && [ "$M" != "$LAST" ]; then
    echo "[$(date +%H:%M:%S)] 检测到修改,上传中..."
    if scp -q "$LOCAL_FILE" "$SERVER_USER@$SERVER_HOST:$SERVER_PATH/index.html"; then
      echo "[$(date +%H:%M:%S)] ✅ 已同步到服务器"
    else
      echo "[$(date +%H:%M:%S)] ❌ 上传失败(检查网络 / SSH 密钥 / 服务器路径)"
    fi
  fi
  LAST=$M
  sleep 2
done