Spaces:
zx2323
/
Runtime error

zx2323 commited on
Commit
e501092
·
verified ·
1 Parent(s): e7c26d6

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. sync_data.sh +13 -12
sync_data.sh CHANGED
@@ -18,22 +18,22 @@ mkdir -p ./data
18
  # 定义函数:清理 TeraCloud 网盘中的旧文件
19
  clean_remote_files() {
20
  echo "正在清理 TeraCloud 网盘中的旧文件..."
21
- # 列出 TeraCloud 网盘中的所有文件
22
- FILE_LIST=$(curl -s -X PROPFIND --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL")
23
- if [ -z "$FILE_LIST" ]; then
24
- echo "无法获取文件列表,请检查 WebDAV 连接"
25
  return
26
  fi
27
 
28
- # 提取文件名(假设 WebDAV 响应格式为 <d:href>/path/to/file</d:href>)
29
- FILE_NAMES=$(echo "$FILE_LIST" | grep -oP '(?<=<d:href>)[^<]+' | sed 's|.*/||')
30
- if [ -z "$FILE_NAMES" ]; then
31
- echo "未找到文件,跳过清理"
32
  return
33
  fi
34
 
35
  # 过滤出带有时间戳的文件(webui_*.db)
36
- TIMESTAMPED_FILES=$(echo "$FILE_NAMES" | grep -E '^webui_.*\.db$')
37
  if [ -z "$TIMESTAMPED_FILES" ]; then
38
  echo "未找到带有时间戳的文件,跳过清理"
39
  return
@@ -41,6 +41,7 @@ clean_remote_files() {
41
 
42
  # 按文件名排序(假设文件名按时间戳排序)
43
  SORTED_FILES=$(echo "$TIMESTAMPED_FILES" | sort -r)
 
44
  # 保留最新的一个文件,删除其他旧文件
45
  COUNT=0
46
  for FILE in $SORTED_FILES; do
@@ -57,6 +58,9 @@ clean_remote_files() {
57
  echo "TeraCloud 网盘清理完成"
58
  }
59
 
 
 
 
60
  # 从 WebDAV 下载 webui.db 文件
61
  echo "正在从 WebDAV 下载数据库文件..."
62
  curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" -o "./data/webui.db" || {
@@ -65,9 +69,6 @@ curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db"
65
  }
66
  echo "下载成功"
67
 
68
- # 在第一次运行时清理 TeraCloud 网盘中的旧文件
69
- clean_remote_files
70
-
71
  # 定义同步函数
72
  sync_data() {
73
  # 首次等待同步间隔
 
18
  # 定义函数:清理 TeraCloud 网盘中的旧文件
19
  clean_remote_files() {
20
  echo "正在清理 TeraCloud 网盘中的旧文件..."
21
+ # 发送 PROPFIND 请求列出 WebDAV 文件
22
+ RESPONSE=$(curl -s -X PROPFIND --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" -H "Depth: 1" "$WEBDAV_URL")
23
+ if [ -z "$RESPONSE" ]; then
24
+ echo "无法获取 WebDAV 文件列表"
25
  return
26
  fi
27
 
28
+ # 解析 XML 响应,提取文件名
29
+ FILE_LIST=$(echo "$RESPONSE" | grep -oP '(?<=<d:href>)[^<]+' | sed 's|.*/||')
30
+ if [ -z "$FILE_LIST" ]; then
31
+ echo "未找到文件"
32
  return
33
  fi
34
 
35
  # 过滤出带有时间戳的文件(webui_*.db)
36
+ TIMESTAMPED_FILES=$(echo "$FILE_LIST" | grep -E '^webui_[0-9]{2}_[0-9]{2}_[0-9]{4}\.db$')
37
  if [ -z "$TIMESTAMPED_FILES" ]; then
38
  echo "未找到带有时间戳的文件,跳过清理"
39
  return
 
41
 
42
  # 按文件名排序(假设文件名按时间戳排序)
43
  SORTED_FILES=$(echo "$TIMESTAMPED_FILES" | sort -r)
44
+
45
  # 保留最新的一个文件,删除其他旧文件
46
  COUNT=0
47
  for FILE in $SORTED_FILES; do
 
58
  echo "TeraCloud 网盘清理完成"
59
  }
60
 
61
+ # 在第一次运行时清理 TeraCloud 网盘中的旧文件
62
+ clean_remote_files
63
+
64
  # 从 WebDAV 下载 webui.db 文件
65
  echo "正在从 WebDAV 下载数据库文件..."
66
  curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" -o "./data/webui.db" || {
 
69
  }
70
  echo "下载成功"
71
 
 
 
 
72
  # 定义同步函数
73
  sync_data() {
74
  # 首次等待同步间隔