nbugs commited on
Commit
b10884e
·
verified ·
1 Parent(s): 13ad5f7

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. sync_data.sh +48 -19
sync_data.sh CHANGED
@@ -95,22 +95,50 @@ EOL
95
  # 首次启动时的数据恢复策略
96
  echo "开始初始化数据恢复..."
97
 
98
- # 首先尝试从 WebDAV 恢复指定文件
99
- echo "正在尝试从 WebDAV 下载指定数据库文件..."
100
- curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/webui_03-05.db" -o "./data/webui.db" && {
101
- echo "成功从 WebDAV 下载指定数据库文件"
102
- # 上传到 HuggingFace
103
- timestamp=$(date +%Y%m%d_%H%M%S)
104
- backup_file="webui_backup_${timestamp}.db"
105
- cp ./data/webui.db "/tmp/${backup_file}"
106
- echo "正在上传初始备份到 HuggingFace..."
107
- python3 /tmp/hf_sync.py upload "${HF_TOKEN}" "${DATASET_ID}" "/tmp/${backup_file}" "${backup_file}"
108
- rm -f "/tmp/${backup_file}"
109
- } || {
110
- echo "从 WebDAV 下载指定文件失败,尝试下载 WebDAV 的 webui.db..."
111
 
112
- curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" -o "./data/webui.db" && {
113
- echo "成功从 WebDAV 下载最新数据库文件"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  # 上传到 HuggingFace
115
  timestamp=$(date +%Y%m%d_%H%M%S)
116
  backup_file="webui_backup_${timestamp}.db"
@@ -124,7 +152,7 @@ curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui
124
  echo "所有恢复方式均失败,将使用空数据库开始"
125
  }
126
  }
127
- }
128
 
129
  # 定义 WebDAV 同步函数
130
  webdav_sync() {
@@ -143,11 +171,11 @@ webdav_sync() {
143
  echo "同步到 WebDAV..."
144
 
145
  # 上传以日期命名的数据库文件
146
- curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
147
  echo "WebDAV 上传成功: $FILENAME"
148
 
149
  # 覆盖Webdav目录下默认的webui.db文件
150
- curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" && {
151
  echo "WebDAV 更新主文件成功"
152
  } || {
153
  echo "WebDAV 更新主文件失败"
@@ -155,7 +183,7 @@ webdav_sync() {
155
  } || {
156
  echo "WebDAV 上传失败,等待重试..."
157
  sleep 10
158
- curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
159
  echo "重试失败,放弃上传。"
160
  }
161
  }
@@ -201,3 +229,4 @@ hf_sync() {
201
  # 后台启动同步进程
202
  webdav_sync &
203
  hf_sync &
 
 
95
  # 首次启动时的数据恢复策略
96
  echo "开始初始化数据恢复..."
97
 
98
+ # 首先尝试从 WebDAV 恢复最新文件
99
+ echo "正在尝试从 WebDAV 获取文件列表..."
100
+
101
+ # 获取 WebDAV 目录中的文件列表并找出最新的备份文件
102
+ webdav_files=$(curl -s -X PROPFIND --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" -H "Depth: 1" "$WEBDAV_URL/openwebui/" | grep -o '<d:href>[^<]*webui_[0-9][0-9]-[0-9][0-9]\.db</d:href>' | sed 's/<d:href>//g' | sed 's/<\/d:href>//g')
103
+
104
+ if [ -n "$webdav_files" ]; then
105
+ # 找出最新的文件 (按文件名排序,取最后一个)
106
+ latest_file=$(echo "$webdav_files" | sort | tail -n 1)
107
+ echo "找到最新的 WebDAV 备份文件: $latest_file"
 
 
 
108
 
109
+ # 下载最新文件
110
+ curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL$latest_file" -o "./data/webui.db" && {
111
+ echo "成功从 WebDAV 下载最新数据库文件: $latest_file"
112
+ # 上传到 HuggingFace
113
+ timestamp=$(date +%Y%m%d_%H%M%S)
114
+ backup_file="webui_backup_${timestamp}.db"
115
+ cp ./data/webui.db "/tmp/${backup_file}"
116
+ echo "正在上传初始备份到 HuggingFace..."
117
+ python3 /tmp/hf_sync.py upload "${HF_TOKEN}" "${DATASET_ID}" "/tmp/${backup_file}" "${backup_file}"
118
+ rm -f "/tmp/${backup_file}"
119
+ } || {
120
+ echo "从 WebDAV 下载最新文件失败,尝试下载 WebDAV 的 webui.db..."
121
+
122
+ curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/webui.db" -o "./data/webui.db" && {
123
+ echo "成功从 WebDAV 下载主数据库文件"
124
+ # 上传到 HuggingFace
125
+ timestamp=$(date +%Y%m%d_%H%M%S)
126
+ backup_file="webui_backup_${timestamp}.db"
127
+ cp ./data/webui.db "/tmp/${backup_file}"
128
+ echo "正在上传初始备份到 HuggingFace..."
129
+ python3 /tmp/hf_sync.py upload "${HF_TOKEN}" "${DATASET_ID}" "/tmp/${backup_file}" "${backup_file}"
130
+ rm -f "/tmp/${backup_file}"
131
+ } || {
132
+ echo "从 WebDAV 下载失败,尝试从 HuggingFace 恢复..."
133
+ python3 /tmp/hf_sync.py download "${HF_TOKEN}" "${DATASET_ID}" || {
134
+ echo "所有恢复方式均失败,将使用空数据库开始"
135
+ }
136
+ }
137
+ }
138
+ else
139
+ echo "WebDAV 中没有找到符合格式的备份文件,尝试下载 webui.db..."
140
+ curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/webui.db" -o "./data/webui.db" && {
141
+ echo "成功从 WebDAV 下载主数据库文件"
142
  # 上传到 HuggingFace
143
  timestamp=$(date +%Y%m%d_%H%M%S)
144
  backup_file="webui_backup_${timestamp}.db"
 
152
  echo "所有恢复方式均失败,将使用空数据库开始"
153
  }
154
  }
155
+ fi
156
 
157
  # 定义 WebDAV 同步函数
158
  webdav_sync() {
 
171
  echo "同步到 WebDAV..."
172
 
173
  # 上传以日期命名的数据库文件
174
+ curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$FILENAME" && {
175
  echo "WebDAV 上传成功: $FILENAME"
176
 
177
  # 覆盖Webdav目录下默认的webui.db文件
178
+ curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/webui.db" && {
179
  echo "WebDAV 更新主文件成功"
180
  } || {
181
  echo "WebDAV 更新主文件失败"
 
183
  } || {
184
  echo "WebDAV 上传失败,等待重试..."
185
  sleep 10
186
+ curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$FILENAME" || {
187
  echo "重试失败,放弃上传。"
188
  }
189
  }
 
229
  # 后台启动同步进程
230
  webdav_sync &
231
  hf_sync &
232
+