From 3813d22e2b879d30e4c42ed0c50457d6c1347b58 Mon Sep 17 00:00:00 2001 From: claude_dev Date: Sat, 1 Aug 2026 07:37:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(nas=5Fsync):=20sync=5Fparquet.sh=20?= =?UTF-8?q?=E5=8A=A0=E4=BF=9D=E6=B4=BB+retry(=E9=98=B26.24G=E8=B7=A8?= =?UTF-8?q?=E5=85=AC=E7=BD=91broken=20pipe)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scp -r 6.24G/70min跨公网,加ServerAliveInterval=30保活+3次retry兜底broken pipe。 --- scripts/nas_sync/sync_parquet.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) 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"