Spaces:
Running
Running
Update sync_data.sh
Browse files- sync_data.sh +35 -12
sync_data.sh
CHANGED
@@ -26,8 +26,19 @@ restore_from_webdav() {
|
|
26 |
# 获取WebDAV上所有备份文件列表
|
27 |
echo "获取 WebDAV 备份文件列表..."
|
28 |
|
29 |
-
#
|
30 |
-
RAW_RESPONSE=$(curl -s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
# 显示调试信息
|
33 |
echo "调试: WebDAV 响应长度 $(echo "$RAW_RESPONSE" | wc -c) 字符"
|
@@ -38,17 +49,23 @@ restore_from_webdav() {
|
|
38 |
echo "$RAW_RESPONSE" | grep -i mcp_backup || echo " (未找到包含 mcp_backup 的行)"
|
39 |
echo ""
|
40 |
|
41 |
-
#
|
42 |
-
|
|
|
43 |
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
|
|
|
|
|
|
|
|
|
|
52 |
|
53 |
if [ -z "$BACKUP_LIST" ]; then
|
54 |
echo "未找到任何备份文件"
|
@@ -57,6 +74,12 @@ restore_from_webdav() {
|
|
57 |
return 1
|
58 |
fi
|
59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
# 尝试下载最新的备份文件
|
61 |
LATEST_BACKUP=$(echo "$BACKUP_LIST" | head -1)
|
62 |
echo "尝试下载最新备份: $LATEST_BACKUP"
|
|
|
26 |
# 获取WebDAV上所有备份文件列表
|
27 |
echo "获取 WebDAV 备份文件列表..."
|
28 |
|
29 |
+
# 尝试使用PROPFIND方法获取目录列表(WebDAV标准方法)
|
30 |
+
RAW_RESPONSE=$(curl -s -X PROPFIND \
|
31 |
+
--user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" \
|
32 |
+
-H "Depth: 1" \
|
33 |
+
-H "Content-Type: text/xml" \
|
34 |
+
-d '<?xml version="1.0" encoding="utf-8"?><propfind xmlns="DAV:"><prop><displayname/></prop></propfind>' \
|
35 |
+
"$WEBDAV_URL/")
|
36 |
+
|
37 |
+
# 如果PROPFIND失败,尝试简单的GET请求
|
38 |
+
if [ -z "$RAW_RESPONSE" ] || echo "$RAW_RESPONSE" | grep -q "Method Not Allowed"; then
|
39 |
+
echo "调试: PROPFIND 方法失败,尝试 GET 方法..."
|
40 |
+
RAW_RESPONSE=$(curl -s --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/")
|
41 |
+
fi
|
42 |
|
43 |
# 显示调试信息
|
44 |
echo "调试: WebDAV 响应长度 $(echo "$RAW_RESPONSE" | wc -c) 字符"
|
|
|
49 |
echo "$RAW_RESPONSE" | grep -i mcp_backup || echo " (未找到包含 mcp_backup 的行)"
|
50 |
echo ""
|
51 |
|
52 |
+
# 多种匹配方式
|
53 |
+
# 方式1: 从XML响应中提取文件名
|
54 |
+
BACKUP_LIST1=$(echo "$RAW_RESPONSE" | grep -oE '<D:displayname[^>]*>[^<]*mcp_backup_[0-9]+_[0-9]+\.tar\.gz[^<]*</D:displayname>' | sed 's/<[^>]*>//g')
|
55 |
|
56 |
+
# 方式2: 从href属性中提取
|
57 |
+
BACKUP_LIST2=$(echo "$RAW_RESPONSE" | grep -oE 'href="[^"]*mcp_backup_[0-9]+_[0-9]+\.tar\.gz[^"]*"' | sed 's/.*href="[^"]*\///g' | sed 's/".*//g')
|
58 |
+
|
59 |
+
# 方式3: 简单文本匹配
|
60 |
+
BACKUP_LIST3=$(echo "$RAW_RESPONSE" | grep -oE 'mcp_backup_[0-9]+_[0-9]+\.tar\.gz')
|
61 |
+
|
62 |
+
# 合并所有结果
|
63 |
+
BACKUP_LIST=$(printf "%s\n%s\n%s\n" "$BACKUP_LIST1" "$BACKUP_LIST2" "$BACKUP_LIST3" | grep -v '^$' | sort -u | sort -r)
|
64 |
+
|
65 |
+
echo "调试: 方式1(XML)找到 $(echo "$BACKUP_LIST1" | grep -c mcp_backup 2>/dev/null || echo 0) 个文件"
|
66 |
+
echo "调试: 方式2(href)找到 $(echo "$BACKUP_LIST2" | grep -c mcp_backup 2>/dev/null || echo 0) 个文件"
|
67 |
+
echo "调试: 方式3(文本)找到 $(echo "$BACKUP_LIST3" | grep -c mcp_backup 2>/dev/null || echo 0) 个文件"
|
68 |
+
echo "调试: 合并后总共 $(echo "$BACKUP_LIST" | grep -c mcp_backup 2>/dev/null || echo 0) 个文件"
|
69 |
|
70 |
if [ -z "$BACKUP_LIST" ]; then
|
71 |
echo "未找到任何备份文件"
|
|
|
74 |
return 1
|
75 |
fi
|
76 |
|
77 |
+
echo "找到以下备份文件:"
|
78 |
+
echo "$BACKUP_LIST" | head -5 | while read file; do echo " - $file"; done
|
79 |
+
if [ $(echo "$BACKUP_LIST" | wc -l) -gt 5 ]; then
|
80 |
+
echo " ... 等共 $(echo "$BACKUP_LIST" | wc -l) 个文件"
|
81 |
+
fi
|
82 |
+
|
83 |
# 尝试下载最新的备份文件
|
84 |
LATEST_BACKUP=$(echo "$BACKUP_LIST" | head -1)
|
85 |
echo "尝试下载最新备份: $LATEST_BACKUP"
|