#!/bin/bash # NAS 端:每日同步 VPS valuation + financial_abstract(ak-eod 每日 --force 全量重写)。 # # 设计迭代(2026-07-31 实测): # - ak-eod 每日 --force 重写 valuation/financial_abstract(估值随股价每日变) # - bsdtar --newer 慢盘 stat 不可行;python tarfile 打包 9.5s/1.1GB OK # - 但 scp 单 tar 1.1GB 跨公网 broken pipe(连接断全丢,retry 难救) # - 改 scp -r 目录:多文件独立传,单文件失败不牵连(sync_parquet.sh 验证 6.24G 鲁棒) # # 调度:ak-eod 19:00 跑完(~21:30)后延迟跑。 set -u KEY=/var/services/homes/admin/.ssh/id_ed25519_nas VPS=Administrator@49.232.102.198 ROOT=/volume1/stock/sanguo_vnpy_v2 DATA=$ROOT/data LOG=$ROOT/data_backup/valuation_daily.log DIRS="valuation financial_abstract" TS=$(date '+%F %T') echo "=== $TS valuation daily (scp -r) ===" >> "$LOG" for d in $DIRS; do OK=0 for attempt in 1 2 3; do if scp -r -i "$KEY" -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -o ServerAliveCountMax=20 \ "$VPS:C:/sanguo_vnpy_v2/data/static/$d" "$DATA/static/" >> "$LOG" 2>&1; then OK=1 break fi echo "[$(date '+%T')] $d scp attempt $attempt fail, retry..." >> "$LOG" sleep 5 done echo "[$(date '+%T')] $d $( [ "$OK" = 1 ] && echo OK || echo FAIL )" >> "$LOG" done # 根级每日域(2026-08-21 巡检补链): valuation_baostock(bs_eod 每晚写 pe/pb 按年 parquet, # NAS 断更自 08-16) + fundamentals_baostock(bs_fund 腿每晚回灌 profit/dupont, 08-20 新域 # 此前 NAS 完全没有)。两域均为 MB 级 parquet, scp -r 秒级, 03:09 时 VPS 写盘已静止。 for d in valuation_baostock fundamentals_baostock; do OK=0 for attempt in 1 2 3; do if scp -r -i "$KEY" -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -o ServerAliveCountMax=20 \ "$VPS:C:/sanguo_vnpy_v2/data/$d" "$DATA/" >> "$LOG" 2>&1; then OK=1 break fi echo "[$(date '+%T')] $d scp attempt $attempt fail, retry..." >> "$LOG" sleep 5 done echo "[$(date '+%T')] $d $( [ "$OK" = 1 ] && echo OK || echo FAIL )" >> "$LOG" done # 周日顺带全量刷 per-stock 周更域(ak-weekly 周六重写 balance/cashflow/top_holders 等 # 14 子域; sync_parquet.sh 6.24G/70min, setsid 脱离不阻塞当日链; 上次全量 2026-08-16 # 手动, 其后 top_holders 等已滞后)。与每日增量互补: 每日链兜住快变域, 周日兜住慢变域。 if [ "$(date +%u)" = "7" ]; then nohup setsid bash "$(dirname "$0")/sync_parquet.sh" > "$LOG" 2>&1 & echo "[$(date '+%T')] sunday weekly parquet full sync launched (detached)" >> "$LOG" fi echo "[$(date '+%T')] valuation daily DONE" >> "$LOG"