Spaces:
Paused
Paused
Update sync_data.sh
Browse files- sync_data.sh +98 -84
sync_data.sh
CHANGED
|
@@ -142,10 +142,10 @@ if [ "$RESTORE_SOURCE" = "webdav" ]; then
|
|
| 142 |
# 仅从 WebDAV 恢复
|
| 143 |
restore_from_webdav
|
| 144 |
elif [ "$RESTORE_SOURCE" = "github" ] || [ "$RESTORE_SOURCE" = "auto" ]; then
|
| 145 |
-
# 从 GitHub
|
| 146 |
GITHUB_RESTORED=0
|
| 147 |
|
| 148 |
-
echo "从 GitHub
|
| 149 |
|
| 150 |
# 检查并恢复 config 目录
|
| 151 |
if [ -d "$GITHUB_DATA_DIR/config" ] && [ "$(ls -A $GITHUB_DATA_DIR/config 2>/dev/null)" ]; then
|
|
@@ -158,21 +158,25 @@ elif [ "$RESTORE_SOURCE" = "github" ] || [ "$RESTORE_SOURCE" = "auto" ]; then
|
|
| 158 |
echo "GitHub 仓库中没有 config 目录或目录为空"
|
| 159 |
fi
|
| 160 |
|
| 161 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 162 |
|
| 163 |
-
# 如果是 auto 模式,GitHub
|
| 164 |
-
if [ "$RESTORE_SOURCE" = "auto" ]; then
|
| 165 |
-
echo "
|
| 166 |
-
|
| 167 |
-
if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
|
| 168 |
-
echo "WebDAV 环境变量缺失,无法恢复 tools 目录"
|
| 169 |
-
else
|
| 170 |
-
restore_from_webdav || echo "WebDAV 恢复 tools 失败,将在同步时重新备份"
|
| 171 |
-
fi
|
| 172 |
elif [ "$GITHUB_RESTORED" = "1" ]; then
|
| 173 |
-
echo "从 GitHub
|
| 174 |
else
|
| 175 |
-
echo "GitHub
|
| 176 |
fi
|
| 177 |
fi
|
| 178 |
|
|
@@ -196,12 +200,13 @@ sync_data() {
|
|
| 196 |
git checkout main || git checkout master
|
| 197 |
|
| 198 |
# 复制最新的配置文件
|
| 199 |
-
echo "检查配置文件变化(GitHub
|
| 200 |
|
| 201 |
# 创建仓库中的目录
|
| 202 |
mkdir -p ./config
|
|
|
|
| 203 |
|
| 204 |
-
#
|
| 205 |
if [ -d "/mcp-proxy-server/config" ]; then
|
| 206 |
# 检查是否有非工作目录的文件
|
| 207 |
CONFIG_FILES=$(ls -A /mcp-proxy-server/config 2>/dev/null | grep -v -E '(github_data|temp_backup|webdav_restore)' || true)
|
|
@@ -227,7 +232,71 @@ sync_data() {
|
|
| 227 |
fi
|
| 228 |
fi
|
| 229 |
|
| 230 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 231 |
|
| 232 |
# 检查是否有变化
|
| 233 |
CONFIG_CHANGED=0
|
|
@@ -235,7 +304,6 @@ sync_data() {
|
|
| 235 |
|
| 236 |
# 检查 config 目录变化(用于 GitHub 备份)
|
| 237 |
if [[ -n $(git status -s) ]]; then
|
| 238 |
-
echo "检测到 config 目录变化"
|
| 239 |
CONFIG_CHANGED=1
|
| 240 |
fi
|
| 241 |
|
|
@@ -248,11 +316,9 @@ sync_data() {
|
|
| 248 |
if [ -f "$TOOLS_LAST_CHECK_FILE" ]; then
|
| 249 |
LAST_TOOLS_TIME=$(cat "$TOOLS_LAST_CHECK_FILE" 2>/dev/null || echo "0")
|
| 250 |
if [ "$CURRENT_TOOLS_TIME" != "$LAST_TOOLS_TIME" ]; then
|
| 251 |
-
echo "检测到 tools 目录变化"
|
| 252 |
TOOLS_CHANGED=1
|
| 253 |
fi
|
| 254 |
else
|
| 255 |
-
echo "首次检查 tools 目录"
|
| 256 |
TOOLS_CHANGED=1
|
| 257 |
fi
|
| 258 |
|
|
@@ -263,64 +329,41 @@ sync_data() {
|
|
| 263 |
# 根据变化情况执行备份
|
| 264 |
if [ "$CONFIG_CHANGED" = "1" ] || [ "$TOOLS_CHANGED" = "1" ]; then
|
| 265 |
echo "检测到文件变化,开始备份..."
|
| 266 |
-
echo " - Config 变化: $([ "$CONFIG_CHANGED" = "1" ] && echo "是" || echo "否")"
|
| 267 |
-
echo " - Tools 变化: $([ "$TOOLS_CHANGED" = "1" ] && echo "是" || echo "否")"
|
| 268 |
|
| 269 |
# GitHub 备份(仅当 config 有变化时)
|
| 270 |
if [ "$CONFIG_CHANGED" = "1" ]; then
|
| 271 |
-
echo "
|
| 272 |
-
|
| 273 |
-
git
|
| 274 |
-
|
| 275 |
-
# 提交变更
|
| 276 |
-
git commit -m "Auto sync config $(date '+%Y-%m-%d %H:%M:%S')"
|
| 277 |
-
|
| 278 |
-
# 推送到远程仓库
|
| 279 |
-
git push origin HEAD && {
|
| 280 |
-
echo "GitHub推送成功"
|
| 281 |
-
}|| {
|
| 282 |
-
echo "推送失败,等待重试..."
|
| 283 |
-
sleep 10
|
| 284 |
-
git push origin HEAD || {
|
| 285 |
-
echo "重试失败,放弃推送到Github。"
|
| 286 |
-
}
|
| 287 |
-
}
|
| 288 |
-
else
|
| 289 |
-
echo "跳过 GitHub 备份(config 无变化)"
|
| 290 |
fi
|
| 291 |
|
| 292 |
# WebDAV 备份(当 config 或 tools 有变化时)
|
| 293 |
if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
|
| 294 |
-
echo "WebDAV 环境变量缺失,跳过
|
| 295 |
else
|
| 296 |
-
echo "
|
| 297 |
# 使用时间戳(年月日时分),每次同步都创建新备份
|
| 298 |
FILENAME="mcp_backup_$(date +'%Y%m%d_%H%M').tar.gz"
|
| 299 |
|
| 300 |
# 创建临时备份压缩包(使用独立目录)
|
| 301 |
TEMP_DIR="$WORK_DIR/temp_backup"
|
| 302 |
-
rm -rf "$TEMP_DIR"
|
| 303 |
mkdir -p "$TEMP_DIR"
|
| 304 |
|
| 305 |
# 复制要备份的目录到临时目录(WebDAV 备份包含 config 和 tools)
|
| 306 |
BACKUP_CREATED=0
|
| 307 |
|
| 308 |
if [ -d "/mcp-proxy-server/config" ]; then
|
| 309 |
-
echo "检查 config 目录用于备份..."
|
| 310 |
-
# 检查是否有非工作目录的文件
|
| 311 |
CONFIG_FILES=$(ls -A /mcp-proxy-server/config 2>/dev/null | grep -v -E '(github_data|temp_backup|webdav_restore)' || true)
|
| 312 |
|
| 313 |
if [ -n "$CONFIG_FILES" ]; then
|
| 314 |
-
echo "备份 config 目录..."
|
| 315 |
mkdir -p "$TEMP_DIR/config"
|
| 316 |
-
|
| 317 |
-
# 使用 cp 逐个复制,排除工作目录
|
| 318 |
for item in /mcp-proxy-server/config/*; do
|
| 319 |
if [ -e "$item" ]; then
|
| 320 |
BASENAME=$(basename "$item")
|
| 321 |
case "$BASENAME" in
|
| 322 |
github_data|temp_backup|webdav_restore)
|
| 323 |
-
echo "跳过工作目录: $BASENAME"
|
| 324 |
;;
|
| 325 |
*)
|
| 326 |
if [ -d "$item" ]; then
|
|
@@ -332,37 +375,24 @@ sync_data() {
|
|
| 332 |
esac
|
| 333 |
fi
|
| 334 |
done
|
| 335 |
-
else
|
| 336 |
-
echo "config 目录为空或只有工作目录,跳过备份"
|
| 337 |
fi
|
| 338 |
fi
|
| 339 |
|
| 340 |
if [ -d "/tools" ] && [ "$(ls -A /tools 2>/dev/null)" ]; then
|
| 341 |
-
echo "备份 tools 目录..."
|
| 342 |
mkdir -p "$TEMP_DIR/tools"
|
| 343 |
-
|
| 344 |
-
# 逐个处理 tools 目录下的项目
|
| 345 |
for item in /tools/*; do
|
| 346 |
if [ -e "$item" ]; then
|
| 347 |
BASENAME=$(basename "$item")
|
| 348 |
-
echo "备份 tools 项目: $BASENAME"
|
| 349 |
-
|
| 350 |
if [ -d "$item" ]; then
|
| 351 |
-
# 创建目标目录
|
| 352 |
mkdir -p "$TEMP_DIR/tools/$BASENAME"
|
| 353 |
-
|
| 354 |
-
# 复制目录内容,包括隐藏文件
|
| 355 |
if [ "$(ls -A "$item" 2>/dev/null)" ]; then
|
| 356 |
cp -r "$item"/* "$TEMP_DIR/tools/$BASENAME/" 2>/dev/null && BACKUP_CREATED=1
|
| 357 |
-
# 也复制隐藏文件
|
| 358 |
cp -r "$item"/.[!.]* "$TEMP_DIR/tools/$BASENAME/" 2>/dev/null || true
|
| 359 |
else
|
| 360 |
-
# 空目录也创建 .gitkeep
|
| 361 |
touch "$TEMP_DIR/tools/$BASENAME/.gitkeep"
|
| 362 |
BACKUP_CREATED=1
|
| 363 |
fi
|
| 364 |
else
|
| 365 |
-
# 直接复制文件
|
| 366 |
cp "$item" "$TEMP_DIR/tools/" 2>/dev/null && BACKUP_CREATED=1
|
| 367 |
fi
|
| 368 |
fi
|
|
@@ -375,34 +405,19 @@ sync_data() {
|
|
| 375 |
tar -czf "../$FILENAME" .
|
| 376 |
cd - > /dev/null
|
| 377 |
|
| 378 |
-
|
| 379 |
-
# 使用 curl 进行文件上传
|
| 380 |
-
curl -T "$WORK_DIR/$FILENAME" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
|
| 381 |
-
echo "WebDAV 上传成功: $FILENAME"
|
| 382 |
-
} || {
|
| 383 |
-
echo "WebDAV 上传失败,等待重试..."
|
| 384 |
-
sleep 10
|
| 385 |
-
curl -T "$WORK_DIR/$FILENAME" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
|
| 386 |
-
echo "重试失败,放弃webdav上传。"
|
| 387 |
-
}
|
| 388 |
-
}
|
| 389 |
-
|
| 390 |
-
# 清理临时文件
|
| 391 |
rm -f "$WORK_DIR/$FILENAME"
|
| 392 |
else
|
| 393 |
-
echo "
|
| 394 |
fi
|
| 395 |
|
| 396 |
-
# 清理临时目录
|
| 397 |
rm -rf "$TEMP_DIR"
|
| 398 |
fi
|
| 399 |
|
| 400 |
-
echo "
|
| 401 |
|
| 402 |
else
|
| 403 |
-
echo "
|
| 404 |
-
echo " - Config 变化: 否"
|
| 405 |
-
echo " - Tools 变化: 否"
|
| 406 |
fi
|
| 407 |
|
| 408 |
# 返回上级目录
|
|
@@ -410,8 +425,7 @@ sync_data() {
|
|
| 410 |
|
| 411 |
# 3. 等待统一的时间间隔
|
| 412 |
SYNC_INTERVAL=${SYNC_INTERVAL:-7200} # 默认间隔时间为 7200 秒
|
| 413 |
-
echo "
|
| 414 |
-
echo "等待 ${SYNC_INTERVAL} 秒后进行下一次同步..."
|
| 415 |
sleep $SYNC_INTERVAL
|
| 416 |
|
| 417 |
done
|
|
|
|
| 142 |
# 仅从 WebDAV 恢复
|
| 143 |
restore_from_webdav
|
| 144 |
elif [ "$RESTORE_SOURCE" = "github" ] || [ "$RESTORE_SOURCE" = "auto" ]; then
|
| 145 |
+
# 从 GitHub 恢复(config 和 tools 目录)
|
| 146 |
GITHUB_RESTORED=0
|
| 147 |
|
| 148 |
+
echo "从 GitHub 恢复配置(config 和 tools 目录)..."
|
| 149 |
|
| 150 |
# 检查并恢复 config 目录
|
| 151 |
if [ -d "$GITHUB_DATA_DIR/config" ] && [ "$(ls -A $GITHUB_DATA_DIR/config 2>/dev/null)" ]; then
|
|
|
|
| 158 |
echo "GitHub 仓库中没有 config 目录或目录为空"
|
| 159 |
fi
|
| 160 |
|
| 161 |
+
# 检查并恢复 tools 目录
|
| 162 |
+
if [ -d "$GITHUB_DATA_DIR/tools" ] && [ "$(ls -A $GITHUB_DATA_DIR/tools 2>/dev/null)" ]; then
|
| 163 |
+
echo "从 GitHub 恢复 tools 目录..."
|
| 164 |
+
mkdir -p /tools
|
| 165 |
+
cp -r "$GITHUB_DATA_DIR/tools"/* /tools/
|
| 166 |
+
echo "GitHub: tools 目录恢复成功"
|
| 167 |
+
GITHUB_RESTORED=1
|
| 168 |
+
else
|
| 169 |
+
echo "GitHub 仓库中没有 tools 目录或目录为空"
|
| 170 |
+
fi
|
| 171 |
|
| 172 |
+
# 如果是 auto 模式,GitHub 恢复后,还可以从 WebDAV 补充恢复
|
| 173 |
+
if [ "$RESTORE_SOURCE" = "auto" ] && [ "$GITHUB_RESTORED" = "0" ]; then
|
| 174 |
+
echo "GitHub 中没有找到任何配置,尝试从 WebDAV 恢复..."
|
| 175 |
+
restore_from_webdav || echo "WebDAV 恢复失败,将在同步时重新备份"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
elif [ "$GITHUB_RESTORED" = "1" ]; then
|
| 177 |
+
echo "从 GitHub 恢复配置完成"
|
| 178 |
else
|
| 179 |
+
echo "GitHub 中没有可恢复的配置"
|
| 180 |
fi
|
| 181 |
fi
|
| 182 |
|
|
|
|
| 200 |
git checkout main || git checkout master
|
| 201 |
|
| 202 |
# 复制最新的配置文件
|
| 203 |
+
echo "检查配置文件变化(GitHub 备份 config 和 tools 目录)..."
|
| 204 |
|
| 205 |
# 创建仓库中的目录
|
| 206 |
mkdir -p ./config
|
| 207 |
+
mkdir -p ./tools
|
| 208 |
|
| 209 |
+
# 同步 config 目录到 GitHub
|
| 210 |
if [ -d "/mcp-proxy-server/config" ]; then
|
| 211 |
# 检查是否有非工作目录的文件
|
| 212 |
CONFIG_FILES=$(ls -A /mcp-proxy-server/config 2>/dev/null | grep -v -E '(github_data|temp_backup|webdav_restore)' || true)
|
|
|
|
| 232 |
fi
|
| 233 |
fi
|
| 234 |
|
| 235 |
+
# 同步 tools 目录到 GitHub(处理多个MCP仓库)
|
| 236 |
+
if [ -d "/tools" ] && [ "$(ls -A /tools 2>/dev/null)" ]; then
|
| 237 |
+
# 清空目标目录
|
| 238 |
+
rm -rf ./tools/*
|
| 239 |
+
|
| 240 |
+
echo "处理 tools 目录中的 MCP 工具..."
|
| 241 |
+
|
| 242 |
+
PROCESSED_COUNT=0
|
| 243 |
+
|
| 244 |
+
# 逐个处理 tools 目录下的MCP工具
|
| 245 |
+
for item in /tools/*; do
|
| 246 |
+
if [ -e "$item" ]; then
|
| 247 |
+
BASENAME=$(basename "$item")
|
| 248 |
+
|
| 249 |
+
if [ -d "$item" ]; then
|
| 250 |
+
echo " 处理 MCP 工具: $BASENAME"
|
| 251 |
+
|
| 252 |
+
# 检查是否是Git仓库
|
| 253 |
+
if [ -d "$item/.git" ]; then
|
| 254 |
+
echo " → 检测到Git仓库,排除.git目录"
|
| 255 |
+
fi
|
| 256 |
+
|
| 257 |
+
# 创建目标目录
|
| 258 |
+
mkdir -p "./tools/$BASENAME"
|
| 259 |
+
|
| 260 |
+
# 复制目录内容
|
| 261 |
+
if [ "$(ls -A "$item" 2>/dev/null)" ]; then
|
| 262 |
+
# 复制所有普通文件和目录(排除.git)
|
| 263 |
+
for subitem in "$item"/*; do
|
| 264 |
+
if [ -e "$subitem" ] && [ "$(basename "$subitem")" != ".git" ]; then
|
| 265 |
+
cp -r "$subitem" "./tools/$BASENAME/" 2>/dev/null || true
|
| 266 |
+
fi
|
| 267 |
+
done
|
| 268 |
+
|
| 269 |
+
# 复制隐藏文件,但排除 .git 目录
|
| 270 |
+
for hidden in "$item"/.[!.]*; do
|
| 271 |
+
if [ -e "$hidden" ] && [ "$(basename "$hidden")" != ".git" ]; then
|
| 272 |
+
cp -r "$hidden" "./tools/$BASENAME/" 2>/dev/null || true
|
| 273 |
+
fi
|
| 274 |
+
done
|
| 275 |
+
|
| 276 |
+
# 检查复制结果
|
| 277 |
+
COPIED_FILES=$(ls -A "./tools/$BASENAME" 2>/dev/null | wc -l)
|
| 278 |
+
echo " → 已复制 $COPIED_FILES 个文件/目录"
|
| 279 |
+
else
|
| 280 |
+
# 空目录创建 .gitkeep
|
| 281 |
+
touch "./tools/$BASENAME/.gitkeep"
|
| 282 |
+
echo " → 空目录,已创建 .gitkeep"
|
| 283 |
+
fi
|
| 284 |
+
|
| 285 |
+
PROCESSED_COUNT=$((PROCESSED_COUNT + 1))
|
| 286 |
+
else
|
| 287 |
+
# 直接复制文件
|
| 288 |
+
echo " 复制文件: $BASENAME"
|
| 289 |
+
cp "$item" "./tools/" 2>/dev/null || true
|
| 290 |
+
PROCESSED_COUNT=$((PROCESSED_COUNT + 1))
|
| 291 |
+
fi
|
| 292 |
+
fi
|
| 293 |
+
done
|
| 294 |
+
|
| 295 |
+
# 显示处理结果摘要
|
| 296 |
+
if [ "$PROCESSED_COUNT" -gt 0 ]; then
|
| 297 |
+
echo "总计处理 $PROCESSED_COUNT 个 MCP 工具"
|
| 298 |
+
fi
|
| 299 |
+
fi
|
| 300 |
|
| 301 |
# 检查是否有变化
|
| 302 |
CONFIG_CHANGED=0
|
|
|
|
| 304 |
|
| 305 |
# 检查 config 目录变化(用于 GitHub 备份)
|
| 306 |
if [[ -n $(git status -s) ]]; then
|
|
|
|
| 307 |
CONFIG_CHANGED=1
|
| 308 |
fi
|
| 309 |
|
|
|
|
| 316 |
if [ -f "$TOOLS_LAST_CHECK_FILE" ]; then
|
| 317 |
LAST_TOOLS_TIME=$(cat "$TOOLS_LAST_CHECK_FILE" 2>/dev/null || echo "0")
|
| 318 |
if [ "$CURRENT_TOOLS_TIME" != "$LAST_TOOLS_TIME" ]; then
|
|
|
|
| 319 |
TOOLS_CHANGED=1
|
| 320 |
fi
|
| 321 |
else
|
|
|
|
| 322 |
TOOLS_CHANGED=1
|
| 323 |
fi
|
| 324 |
|
|
|
|
| 329 |
# 根据变化情况执行备份
|
| 330 |
if [ "$CONFIG_CHANGED" = "1" ] || [ "$TOOLS_CHANGED" = "1" ]; then
|
| 331 |
echo "检测到文件变化,开始备份..."
|
|
|
|
|
|
|
| 332 |
|
| 333 |
# GitHub 备份(仅当 config 有变化时)
|
| 334 |
if [ "$CONFIG_CHANGED" = "1" ]; then
|
| 335 |
+
echo "→ GitHub 备份 (config + tools)"
|
| 336 |
+
git add config/ tools/
|
| 337 |
+
git commit -m "Auto sync config and tools $(date '+%Y-%m-%d %H:%M:%S')"
|
| 338 |
+
git push origin HEAD >/dev/null 2>&1 && echo " ✓ 推送成功" || echo " ✗ 推送失败"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 339 |
fi
|
| 340 |
|
| 341 |
# WebDAV 备份(当 config 或 tools 有变化时)
|
| 342 |
if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
|
| 343 |
+
echo " WebDAV 环境变量缺失,跳过"
|
| 344 |
else
|
| 345 |
+
echo "→ WebDAV 备份 (config + tools)"
|
| 346 |
# 使用时间戳(年月日时分),每次同步都创建新备份
|
| 347 |
FILENAME="mcp_backup_$(date +'%Y%m%d_%H%M').tar.gz"
|
| 348 |
|
| 349 |
# 创建临时备份压缩包(使用独立目录)
|
| 350 |
TEMP_DIR="$WORK_DIR/temp_backup"
|
| 351 |
+
rm -rf "$TEMP_DIR"
|
| 352 |
mkdir -p "$TEMP_DIR"
|
| 353 |
|
| 354 |
# 复制要备份的目录到临时目录(WebDAV 备份包含 config 和 tools)
|
| 355 |
BACKUP_CREATED=0
|
| 356 |
|
| 357 |
if [ -d "/mcp-proxy-server/config" ]; then
|
|
|
|
|
|
|
| 358 |
CONFIG_FILES=$(ls -A /mcp-proxy-server/config 2>/dev/null | grep -v -E '(github_data|temp_backup|webdav_restore)' || true)
|
| 359 |
|
| 360 |
if [ -n "$CONFIG_FILES" ]; then
|
|
|
|
| 361 |
mkdir -p "$TEMP_DIR/config"
|
|
|
|
|
|
|
| 362 |
for item in /mcp-proxy-server/config/*; do
|
| 363 |
if [ -e "$item" ]; then
|
| 364 |
BASENAME=$(basename "$item")
|
| 365 |
case "$BASENAME" in
|
| 366 |
github_data|temp_backup|webdav_restore)
|
|
|
|
| 367 |
;;
|
| 368 |
*)
|
| 369 |
if [ -d "$item" ]; then
|
|
|
|
| 375 |
esac
|
| 376 |
fi
|
| 377 |
done
|
|
|
|
|
|
|
| 378 |
fi
|
| 379 |
fi
|
| 380 |
|
| 381 |
if [ -d "/tools" ] && [ "$(ls -A /tools 2>/dev/null)" ]; then
|
|
|
|
| 382 |
mkdir -p "$TEMP_DIR/tools"
|
|
|
|
|
|
|
| 383 |
for item in /tools/*; do
|
| 384 |
if [ -e "$item" ]; then
|
| 385 |
BASENAME=$(basename "$item")
|
|
|
|
|
|
|
| 386 |
if [ -d "$item" ]; then
|
|
|
|
| 387 |
mkdir -p "$TEMP_DIR/tools/$BASENAME"
|
|
|
|
|
|
|
| 388 |
if [ "$(ls -A "$item" 2>/dev/null)" ]; then
|
| 389 |
cp -r "$item"/* "$TEMP_DIR/tools/$BASENAME/" 2>/dev/null && BACKUP_CREATED=1
|
|
|
|
| 390 |
cp -r "$item"/.[!.]* "$TEMP_DIR/tools/$BASENAME/" 2>/dev/null || true
|
| 391 |
else
|
|
|
|
| 392 |
touch "$TEMP_DIR/tools/$BASENAME/.gitkeep"
|
| 393 |
BACKUP_CREATED=1
|
| 394 |
fi
|
| 395 |
else
|
|
|
|
| 396 |
cp "$item" "$TEMP_DIR/tools/" 2>/dev/null && BACKUP_CREATED=1
|
| 397 |
fi
|
| 398 |
fi
|
|
|
|
| 405 |
tar -czf "../$FILENAME" .
|
| 406 |
cd - > /dev/null
|
| 407 |
|
| 408 |
+
curl -T "$WORK_DIR/$FILENAME" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" >/dev/null 2>&1 && echo " ✓ 上传成功" || echo " ✗ 上传失败"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 409 |
rm -f "$WORK_DIR/$FILENAME"
|
| 410 |
else
|
| 411 |
+
echo " ✗ 无文件可备份"
|
| 412 |
fi
|
| 413 |
|
|
|
|
| 414 |
rm -rf "$TEMP_DIR"
|
| 415 |
fi
|
| 416 |
|
| 417 |
+
echo "备份完成"
|
| 418 |
|
| 419 |
else
|
| 420 |
+
echo "无文件变化,跳过备份"
|
|
|
|
|
|
|
| 421 |
fi
|
| 422 |
|
| 423 |
# 返回上级目录
|
|
|
|
| 425 |
|
| 426 |
# 3. 等待统一的时间间隔
|
| 427 |
SYNC_INTERVAL=${SYNC_INTERVAL:-7200} # 默认间隔时间为 7200 秒
|
| 428 |
+
echo "等待 ${SYNC_INTERVAL} 秒后进行下一次检查..."
|
|
|
|
| 429 |
sleep $SYNC_INTERVAL
|
| 430 |
|
| 431 |
done
|