aBER0724 commited on
Commit
de946cf
·
verified ·
1 Parent(s): caf96cd

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. sync_data.sh +70 -7
sync_data.sh CHANGED
@@ -209,13 +209,14 @@ elif [ "$RESTORE_SOURCE" = "github" ] || [ "$RESTORE_SOURCE" = "auto" ]; then
209
  mkdir -p /tools
210
  cp -r "$GITHUB_DATA_DIR/tools"/* /tools/
211
  echo "GitHub: tools 目录恢复成功"
212
- GITHUB_RESTORED=1
213
  GITHUB_TOOLS_RESTORED=1
214
  else
215
  echo "GitHub 仓库中没有 tools 目录或目录为空"
216
  fi
217
  else
218
  echo "跳过 tools 目录恢复(由 GITHUB_BACKUP_TOOLS=false 控制)"
 
 
219
  fi
220
 
221
  # auto 模式的补充恢复逻辑
@@ -225,8 +226,12 @@ elif [ "$RESTORE_SOURCE" = "github" ] || [ "$RESTORE_SOURCE" = "auto" ]; then
225
  echo "GitHub 中没有找到任何配置,尝试从 WebDAV 恢复..."
226
  restore_from_webdav || echo "WebDAV 恢复失败,将在同步时重新备份"
227
  elif [ "$GITHUB_TOOLS_RESTORED" = "0" ]; then
228
- # GitHub恢复了config但没有tools,从WebDAV补充恢复tools
229
- echo "GitHub 中没有 tools 目录,尝试从 WebDAV 补充恢复..."
 
 
 
 
230
  restore_from_webdav || echo "WebDAV 恢复失败"
231
  fi
232
  elif [ "$GITHUB_RESTORED" = "1" ]; then
@@ -264,10 +269,68 @@ sync_data() {
264
  echo "检查配置文件变化(GitHub 仅备份 config 目录)..."
265
  fi
266
 
267
- # 创建仓库中的目录
268
- mkdir -p ./config
269
- if [ "$GITHUB_BACKUP_TOOLS" = "true" ]; then
270
- mkdir -p ./tools
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271
  fi
272
 
273
  # 同步 config 目录到 GitHub
 
209
  mkdir -p /tools
210
  cp -r "$GITHUB_DATA_DIR/tools"/* /tools/
211
  echo "GitHub: tools 目录恢复成功"
 
212
  GITHUB_TOOLS_RESTORED=1
213
  else
214
  echo "GitHub 仓库中没有 tools 目录或目录为空"
215
  fi
216
  else
217
  echo "跳过 tools 目录恢复(由 GITHUB_BACKUP_TOOLS=false 控制)"
218
+ # 当 GITHUB_BACKUP_TOOLS=false 时,强制从 WebDAV 恢复 tools
219
+ GITHUB_TOOLS_RESTORED=0
220
  fi
221
 
222
  # auto 模式的补充恢复逻辑
 
226
  echo "GitHub 中没有找到任何配置,尝试从 WebDAV 恢复..."
227
  restore_from_webdav || echo "WebDAV 恢复失败,将在同步时重新备份"
228
  elif [ "$GITHUB_TOOLS_RESTORED" = "0" ]; then
229
+ # GitHub恢复了config但没有tools,或者禁用了GitHub tools备份,从WebDAV恢复tools
230
+ if [ "$GITHUB_BACKUP_TOOLS" = "false" ]; then
231
+ echo "GitHub tools 备份已禁用,从 WebDAV 恢复 tools 目录..."
232
+ else
233
+ echo "GitHub 中没有 tools 目录,尝试从 WebDAV 补充恢复..."
234
+ fi
235
  restore_from_webdav || echo "WebDAV 恢复失败"
236
  fi
237
  elif [ "$GITHUB_RESTORED" = "1" ]; then
 
269
  echo "检查配置文件变化(GitHub 仅备份 config 目录)..."
270
  fi
271
 
272
+ # 先从GitHub拉取最新状态,实现双向同步
273
+ echo "从 GitHub 拉取最新状态..."
274
+ git fetch origin
275
+
276
+ # 检查是否有远程更新
277
+ LOCAL_COMMIT=$(git rev-parse HEAD)
278
+ REMOTE_COMMIT=$(git rev-parse origin/$(git branch --show-current))
279
+
280
+ if [ "$LOCAL_COMMIT" != "$REMOTE_COMMIT" ]; then
281
+ echo "检测到 GitHub 有更新,正在同步..."
282
+
283
+ # 保存本地文件状态
284
+ TEMP_BACKUP_DIR="$WORK_DIR/local_backup"
285
+ rm -rf "$TEMP_BACKUP_DIR"
286
+ mkdir -p "$TEMP_BACKUP_DIR"
287
+
288
+ # 备份本地的config和tools到临时目录
289
+ if [ -d "/mcp-proxy-server/config" ]; then
290
+ cp -r "/mcp-proxy-server/config" "$TEMP_BACKUP_DIR/" 2>/dev/null || true
291
+ fi
292
+ if [ -d "/tools" ] && [ "$GITHUB_BACKUP_TOOLS" = "true" ]; then
293
+ cp -r "/tools" "$TEMP_BACKUP_DIR/" 2>/dev/null || true
294
+ fi
295
+
296
+ # 执行硬重置到远程状态
297
+ git reset --hard origin/$(git branch --show-current)
298
+
299
+ # 从GitHub更新本地文件
300
+ if [ -d "./config" ] && [ "$(ls -A ./config 2>/dev/null)" ]; then
301
+ echo "从 GitHub 更新 config 目录..."
302
+ mkdir -p /mcp-proxy-server/config
303
+ cp -r ./config/* /mcp-proxy-server/config/
304
+ else
305
+ # 如果GitHub中没有config目录,清空本地config
306
+ echo "GitHub 中没有 config 目录,清空本地 config..."
307
+ rm -rf /mcp-proxy-server/config/*
308
+ fi
309
+
310
+ # 根据GITHUB_BACKUP_TOOLS设置处理tools目录
311
+ if [ "$GITHUB_BACKUP_TOOLS" = "true" ]; then
312
+ if [ -d "./tools" ] && [ "$(ls -A ./tools 2>/dev/null)" ]; then
313
+ echo "从 GitHub 更新 tools 目录..."
314
+ mkdir -p /tools
315
+ rm -rf /tools/* # 清空现有tools
316
+ cp -r ./tools/* /tools/
317
+ else
318
+ # 如果GitHub中没有tools目录,清空本地tools
319
+ echo "GitHub 中没有 tools 目录,清空本地 tools..."
320
+ rm -rf /tools/*
321
+ fi
322
+ else
323
+ # 如果禁用了GitHub tools备份,从WebDAV恢复tools
324
+ echo "GitHub tools 备份已禁用,从 WebDAV 恢复 tools 目录..."
325
+ restore_from_webdav || echo "WebDAV 恢复失败"
326
+ fi
327
+
328
+ echo "GitHub 同步完成"
329
+
330
+ # 清理临时备份
331
+ rm -rf "$TEMP_BACKUP_DIR"
332
+ else
333
+ echo "GitHub 状态已是最新"
334
  fi
335
 
336
  # 同步 config 目录到 GitHub