diff --git a/scripts/nas_sync/sync_parquet.sh b/scripts/nas_sync/sync_parquet.sh index 0cd69fc..e6913b6 100644 --- a/scripts/nas_sync/sync_parquet.sh +++ b/scripts/nas_sync/sync_parquet.sh @@ -11,11 +11,19 @@ LOG=/volume1/stock/sanguo_vnpy_v2/data_backup/parquet.log echo "=== parquet scp start $(date) ===" >> "$LOG" cd "$DATA" || { echo "cd fail" >> "$LOG"; exit 1; } -# scp -r 覆盖式拉取(scp 无断点续传,已传文件会重传;6.24GB 全量约 70min) -scp -r -i "$KEY" -o StrictHostKeyChecking=no \ - "$VPS:C:/sanguo_vnpy_v2/data/static" \ - "$VPS:C:/sanguo_vnpy_v2/data/valuation_baostock" ./ >> "$LOG" 2>&1 -echo "SCP_RC=$? $(date)" >> "$LOG" +# scp -r 覆盖式拉取(6.24GB 全量约 70min;ServerAliveInterval 保活防跨公网 broken pipe + retry 兜底) +SCP_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" \ + "$VPS:C:/sanguo_vnpy_v2/data/valuation_baostock" ./ >> "$LOG" 2>&1; then + SCP_OK=1 + break + fi + echo "[$(date '+%T')] scp attempt $attempt broken pipe, retry..." >> "$LOG" + sleep 10 +done +echo "SCP_RC OK=$SCP_OK $(date)" >> "$LOG" du -sh "$DATA/static" "$DATA/valuation_baostock" >> "$LOG" 2>&1 echo "PARQUET_DONE $(date)" >> "$LOG"