From cbf2db8069de34342efa8bfe45fee049d61f4dae Mon Sep 17 00:00:00 2001 From: claude_dev Date: Fri, 21 Aug 2026 23:18:06 +0800 Subject: [PATCH] =?UTF-8?q?fix(nas):=20sync=5Fparquet.sh=E5=8A=A0=E4=BA=92?= =?UTF-8?q?=E6=96=A5=E9=94=81=E9=98=B2=E5=91=A8=E6=97=A5=E5=8F=8C=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E6=92=95=E6=8D=9F=E2=80=94=E2=80=94DSM=20id=3D6(?= =?UTF-8?q?=E5=91=A8=E6=97=A504:00)=E5=BD=93=E5=B9=B4=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=8D=B3=E8=B7=91=E6=9C=AC=E8=84=9A=E6=9C=AC=E5=85=A8=E9=87=8F?= =?UTF-8?q?=E4=BD=86=E4=BB=8E=E6=9C=AA=E5=AE=9E=E8=AF=81(=E6=97=A0parquet.?= =?UTF-8?q?log,=E5=BD=93=E6=97=B6=E6=A0=87=E6=B3=A8=E5=BE=85=E7=94=A8?= =?UTF-8?q?=E6=88=B7DSM=20UI=E7=A1=AE=E8=AE=A4=E5=91=BD=E4=BB=A4),08-21?= =?UTF-8?q?=E5=8F=88=E6=8C=82=E4=BA=86sync=5Fvaluation=5Fdaily.sh=E5=91=A8?= =?UTF-8?q?=E6=97=A5=E9=92=A9=E5=AD=90(~03:3x)=E5=90=8C=E4=B8=80=E8=84=9A?= =?UTF-8?q?=E6=9C=AC,=E4=B8=A4=E8=B7=AF=E8=8B=A5=E5=90=8C=E6=97=A5?= =?UTF-8?q?=E9=83=BD=E8=A7=A6=E5=8F=91=3D=E5=8F=8Cscp=20-r=E5=B9=B6?= =?UTF-8?q?=E5=8F=91=E5=86=99=E5=90=8C=E6=96=87=E4=BB=B6=E6=92=95=E6=8D=9F?= =?UTF-8?q?parquet;mkdir=E5=8E=9F=E5=AD=90=E9=94=81+>6h=E9=99=88=E6=97=A7?= =?UTF-8?q?=E8=A6=86=E7=9B=96(=E5=8D=95=E8=B7=9170min=E8=BF=9C=E4=B8=8D?= =?UTF-8?q?=E5=88=B0)+trap=20EXIT=E6=B8=85=E7=90=86,=E5=93=AA=E8=B7=AF?= =?UTF-8?q?=E5=85=88=E5=88=B0=E5=93=AA=E8=B7=AF=E8=B7=91,=E5=90=8E?= =?UTF-8?q?=E5=88=B0skip=E7=95=99=E7=97=95=20[nas]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/nas_sync/sync_parquet.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/scripts/nas_sync/sync_parquet.sh b/scripts/nas_sync/sync_parquet.sh index 9fc4c17..0c875c2 100644 --- a/scripts/nas_sync/sync_parquet.sh +++ b/scripts/nas_sync/sync_parquet.sh @@ -8,6 +8,19 @@ VPS=Administrator@49.232.102.198 DATA=/volume1/stock/sanguo_vnpy_v2/data LOG=/volume1/stock/sanguo_vnpy_v2/data_backup/parquet.log +# 互斥锁(2026-08-21): 触发源两路=周日钩子(sync_valuation_daily.sh)与 DSM id=6 周日04:00, +# 双 scp -r 并发写同文件会撕损; mkdir 原子锁, >6h 视陈旧覆盖(单跑 70min 远不到)。 +LOCK=/volume1/stock/sanguo_vnpy_v2/data_backup/parquet_full.lock +if [ -d "$LOCK" ]; then + if [ -z "$(find "$LOCK" -maxdepth 0 -mmin +360 2>/dev/null)" ]; then + echo "[$(date '+%T')] lock held, another full sync running -> skip" >> "$LOG" + exit 0 + fi + rmdir "$LOCK" 2>/dev/null +fi +mkdir "$LOCK" 2>/dev/null || { echo "[$(date '+%T')] lock mkdir fail" >> "$LOG"; exit 1; } +trap 'rmdir "$LOCK" 2>/dev/null' EXIT + echo "=== parquet scp start $(date) ===" >> "$LOG" cd "$DATA" || { echo "cd fail" >> "$LOG"; exit 1; }