2026-09-15 18:47:02 +08:00
|
|
|
|
#!/usr/bin/env bash
|
2026-09-19 15:12:19 +08:00
|
|
|
|
. "$(cd "$(dirname "$0")/.." && pwd)/config/load.sh"
|
2026-09-15 18:47:02 +08:00
|
|
|
|
# B2' 步:47 → 106 直推生产 dataRoot(tar-over-ssh;只用命令执行,绕开 rsync 协议问题)
|
|
|
|
|
|
# · tar --numeric-owner 保 uid/gid(否则 106 上属主错 ⇒ 实例 EACCES)
|
|
|
|
|
|
# · 排除 dshs.db*(权威源=47 的 PG)与 secret.key(主密钥不外扩 —— R5 最小面)
|
|
|
|
|
|
set -uo pipefail
|
|
|
|
|
|
KEY=/root/.ssh/dshworker_ed25519
|
2026-09-19 15:12:19 +08:00
|
|
|
|
DST=root@"$DSH_PEER_PUBLIC_IP"
|
2026-09-15 18:47:02 +08:00
|
|
|
|
SSHO="-i $KEY -o BatchMode=yes -o StrictHostKeyChecking=accept-new"
|
|
|
|
|
|
|
|
|
|
|
|
echo "=== 1) 目标端准备(ssh -n 防抢 stdin) ==="
|
2026-09-19 15:12:19 +08:00
|
|
|
|
ssh -n $SSHO "$DST" "mkdir -p $DSHS_DATA_ROOT && echo ready: \$(ls -ld $DSHS_DATA_ROOT)"
|
2026-09-15 18:47:02 +08:00
|
|
|
|
|
|
|
|
|
|
echo "=== 2) 推送(tar → ssh → tar --numeric-owner -x) ==="
|
2026-09-19 15:12:19 +08:00
|
|
|
|
cd "$DSHS_DATA_ROOT"
|
2026-09-15 18:47:02 +08:00
|
|
|
|
tar --numeric-owner -cf - \
|
|
|
|
|
|
--exclude=./dshs.db --exclude=./dshs.db-shm --exclude=./dshs.db-wal --exclude=./secret.key \
|
2026-09-19 15:12:19 +08:00
|
|
|
|
. | ssh $SSHO "$DST" "tar -C $DSHS_DATA_ROOT --numeric-owner -xf -"
|
2026-09-15 18:47:02 +08:00
|
|
|
|
rc=$?
|
|
|
|
|
|
echo " 管道 rc=$rc"
|
|
|
|
|
|
|
|
|
|
|
|
echo "=== 3) 目标端核对 ==="
|
|
|
|
|
|
ssh -n $SSHO "$DST" 'bash -c "
|
2026-09-19 15:12:19 +08:00
|
|
|
|
echo \" 顶层: \$(ls "$DSHS_DATA_ROOT" | tr \"\n\" \" \")\"
|
|
|
|
|
|
echo \" 总量: \$(du -sh "$DSHS_DATA_ROOT" | cut -f1)\"
|
|
|
|
|
|
echo \" users 目录数: \$(ls "$DSHS_DATA_ROOT"/users | wc -l)\"
|
2026-09-15 18:47:02 +08:00
|
|
|
|
echo \" --- 属主抽样(应与 47 的 uid 一致) ---\"
|
2026-09-19 15:12:19 +08:00
|
|
|
|
for d in "$DSHS_DATA_ROOT"/users/*/; do printf \" %-38s uid=%s\n\" \"\$(basename \$d)\" \"\$(stat -c %u \$d)\"; done
|
|
|
|
|
|
echo \" bundled-skills=\$(ls "$DSHS_DATA_ROOT"/bundled-skills | wc -l) business-plugins=\$(ls "$DSHS_DATA_ROOT"/business-plugins | wc -l)\"
|
|
|
|
|
|
echo \" ⛔ 不该有 dshs.db/secret.key: \$(ls "$DSHS_DATA_ROOT"/dshs.db "$DSHS_DATA_ROOT"/secret.key 2>/dev/null | wc -l) 个(应 0)\"
|
2026-09-15 18:47:02 +08:00
|
|
|
|
"'
|