yangtb24 commited on
Commit
fb1db5d
·
verified ·
1 Parent(s): 785bd2d

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. sync_data.sh +12 -8
sync_data.sh CHANGED
@@ -6,17 +6,21 @@ if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD"
6
  exit 1
7
  fi
8
 
9
- curl -v --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui"
10
-
11
  # 创建数据目录
12
  mkdir -p ./data
13
 
 
 
 
 
 
 
14
  # 从 WebDAV 拉取最新的备份
15
  echo "正在从 WebDAV 拉取备份..."
16
- LATEST_BACKUP=$(curl -s --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui" | grep -o 'webui_[0-9]\{8\}_[0-9]\{4\}\.db' | sort -r | head -n 1)
17
 
18
  if [ -n "$LATEST_BACKUP" ]; then
19
- curl -o ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$LATEST_BACKUP"
20
  echo "已从 WebDAV 拉取备份: $LATEST_BACKUP"
21
  else
22
  echo "WebDAV 上未找到备份文件,将创建新的数据库。"
@@ -32,11 +36,11 @@ sync_data() {
32
  # 检查是否存在要上传的文件
33
  if [ -f ./data/webui.db ]; then
34
  # 使用 curl 进行文件上传
35
- curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$FILENAME" && {
36
  echo "WebDAV 上传成功: $FILENAME"
37
 
38
  # 获取 WebDAV 上的所有备份文件
39
- BACKUP_FILES=$(curl -s --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui" | grep -o 'webui_[0-9]\{8\}_[0-9]\{4\}\.db' | sort)
40
 
41
  # 统计备份文件数量
42
  NUM_BACKUPS=$(echo "$BACKUP_FILES" | wc -l)
@@ -44,13 +48,13 @@ sync_data() {
44
  # 如果备份文件数量超过 20 个,则删除最旧的备份
45
  if (( NUM_BACKUPS > 20 )); then
46
  OLDEST_BACKUP=$(echo "$BACKUP_FILES" | head -n 1)
47
- curl -X DELETE --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$OLDEST_BACKUP"
48
  echo "已删除最旧的备份: $OLDEST_BACKUP"
49
  fi
50
  } || {
51
  echo "WebDAV 上传失败,等待重试..."
52
  sleep 10
53
- curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$FILENAME" || {
54
  echo "重试失败,放弃 webdav 上传。"
55
  }
56
  }
 
6
  exit 1
7
  fi
8
 
 
 
9
  # 创建数据目录
10
  mkdir -p ./data
11
 
12
+ # 确保 WEBDAV_URL 末尾有 /
13
+ if [[ ! "$WEBDAV_URL" =~ /$ ]]; then
14
+ WEBDAV_URL="$WEBDAV_URL/"
15
+ fi
16
+
17
+
18
  # 从 WebDAV 拉取最新的备份
19
  echo "正在从 WebDAV 拉取备份..."
20
+ LATEST_BACKUP=$(curl -s -L --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/" | grep -o 'webui_[0-9]\{8\}_[0-9]\{4\}\.db' | sort -r | head -n 1)
21
 
22
  if [ -n "$LATEST_BACKUP" ]; then
23
+ curl -o ./data/webui.db -L --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$LATEST_BACKUP"
24
  echo "已从 WebDAV 拉取备份: $LATEST_BACKUP"
25
  else
26
  echo "WebDAV 上未找到备份文件,将创建新的数据库。"
 
36
  # 检查是否存在要上传的文件
37
  if [ -f ./data/webui.db ]; then
38
  # 使用 curl 进行文件上传
39
+ curl -T ./data/webui.db -L --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$FILENAME" && {
40
  echo "WebDAV 上传成功: $FILENAME"
41
 
42
  # 获取 WebDAV 上的所有备份文件
43
+ BACKUP_FILES=$(curl -s -L --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/" | grep -o 'webui_[0-9]\{8\}_[0-9]\{4\}\.db' | sort)
44
 
45
  # 统计备份文件数量
46
  NUM_BACKUPS=$(echo "$BACKUP_FILES" | wc -l)
 
48
  # 如果备份文件数量超过 20 个,则删除最旧的备份
49
  if (( NUM_BACKUPS > 20 )); then
50
  OLDEST_BACKUP=$(echo "$BACKUP_FILES" | head -n 1)
51
+ curl -X DELETE -L --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$OLDEST_BACKUP"
52
  echo "已删除最旧的备份: $OLDEST_BACKUP"
53
  fi
54
  } || {
55
  echo "WebDAV 上传失败,等待重试..."
56
  sleep 10
57
+ curl -T ./data/webui.db -L --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$FILENAME" || {
58
  echo "重试失败,放弃 webdav 上传。"
59
  }
60
  }