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 |
+
|