#!/usr/bin/env bash # 把 Windows 侧工作区同步到 WSL 里的测试部署目录。 # # 为什么不能直接 rsync --delete:WSL 侧有几份「只存在于目标机」的文件, # 源目录里没有它们,--delete 会把它们当多余文件删掉: # - conf/app.ini 本地测试配置(数据库密码、对象存储密钥;模板见 dev/wsl-app.ini) # 第一次踩这个坑时整份 app.ini 被删,服务器重启后起不来。 # # 用法:在仓库根目录执行 # bash dev/sync-wsl.sh set -euo pipefail SRC="$(cd "$(dirname "$0")/.." && pwd)" DST=/home/tamakyi/tb/src cd "$SRC" tar -cf - \ --exclude=.git \ --exclude=outputs \ --exclude=.workbuddy \ . 2>/dev/null | wsl -d Debian -e bash -c ' set -e DST=/home/tamakyi/tb/src rm -rf /tmp/tbsync && mkdir -p /tmp/tbsync tar -xf - -C /tmp/tbsync # 只同步代码与资源,绝不动目标侧的 conf/app.ini rsync -a --delete --exclude "conf/app.ini" /tmp/tbsync/ "$DST"/ rm -rf /tmp/tbsync echo "SYNCED -> $DST" '