Update sync_data.sh
Browse files- 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 |
}
|