b2aab85105
新增 export_table.py/merge_table.py/sync_tables.sh: VPS stdin喂python全量dump → scp → NAS全量替换(DROP+CREATE+INSERT,幂等可重跑)。sync_dbbardata.sh 每日increment末尾连带跑 sync_tables,保持NAS副本成份股/复权因子不陈旧。修复NAS组合回测选股恒空(NAS副本缺constituent_unified表,phase3只导dbbardata)。
42 lines
1.6 KiB
Bash
42 lines
1.6 KiB
Bash
#!/bin/bash
|
||
# NAS 端:小表全量同步(constituent_unified / bs_adjust_factor 等)。
|
||
#
|
||
# 这些表无 id 增量键、行数万级、变化不频繁(成份股月度调整 / 除权日),
|
||
# 全量 dump + replace 最简,每天跑也只需几秒。
|
||
#
|
||
# 用法: bash sync_tables.sh
|
||
# 设计同 sync_dbbardata.sh: VPS python(stdin 喂) 导出 sqlite → scp → NAS 全量替换。
|
||
# 幂等: merge 端 DROP+CREATE+INSERT,重跑安全。
|
||
set -eu
|
||
|
||
KEY=/var/services/homes/admin/.ssh/id_ed25519_nas
|
||
VPS=Administrator@49.232.102.198
|
||
VPS_DB='C:\sanguo_vnpy_v2\data\quant_trading.db'
|
||
VPS_OUT='C:\sanguo_vnpy_v2\data\_sync_tbl.db'
|
||
VPS_OUT_SCP='C:/sanguo_vnpy_v2/data/_sync_tbl.db'
|
||
VPS_PY='C:\Python310\python.exe -X utf8 -'
|
||
|
||
ROOT=/volume1/stock/sanguo_vnpy_v2
|
||
EXP=$ROOT/scripts/nas_sync/export_table.py
|
||
MERGE=$ROOT/scripts/nas_sync/merge_table.py
|
||
DB=$ROOT/data_backup/quant_trading.db
|
||
STAGE=$ROOT/data_backup/_staging
|
||
LOG=$ROOT/data_backup/sync_tables.log
|
||
|
||
# 要全量同步的小表清单(merge_table.py 需登记 schema)
|
||
TABLES=(constituent_unified bs_adjust_factor)
|
||
|
||
mkdir -p "$STAGE"
|
||
echo "=== $(date '+%F %T') tables sync start ===" >> "$LOG"
|
||
|
||
for T in "${TABLES[@]}"; do
|
||
echo "[$(date '+%T')] export $T ..." >> "$LOG"
|
||
ssh -i "$KEY" -o StrictHostKeyChecking=no "$VPS" \
|
||
"$VPS_PY --db $VPS_DB --out $VPS_OUT --table $T" < "$EXP" >> "$LOG" 2>&1
|
||
scp -i "$KEY" -o StrictHostKeyChecking=no "$VPS:$VPS_OUT_SCP" "$STAGE/tbl.db" >> "$LOG" 2>&1
|
||
python3 "$MERGE" --db "$DB" --inc "$STAGE/tbl.db" --table "$T" >> "$LOG" 2>&1
|
||
rm -f "$STAGE/tbl.db"
|
||
echo "[$(date '+%T')] $T done" >> "$LOG"
|
||
done
|
||
echo "=== $(date '+%F %T') TABLES SYNC DONE ===" >> "$LOG"
|