Update sync_data.sh
Browse files- sync_data.sh +48 -19
sync_data.sh
CHANGED
@@ -95,22 +95,50 @@ EOL
|
|
95 |
# 首次启动时的数据恢复策略
|
96 |
echo "开始初始化数据恢复..."
|
97 |
|
98 |
-
# 首先尝试从 WebDAV
|
99 |
-
echo "正在尝试从 WebDAV
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
echo "
|
107 |
-
|
108 |
-
rm -f "/tmp/${backup_file}"
|
109 |
-
} || {
|
110 |
-
echo "从 WebDAV 下载指定文件失败,尝试下载 WebDAV 的 webui.db..."
|
111 |
|
112 |
-
|
113 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
|