Update sync_data.sh
Browse files- sync_data.sh +9 -7
sync_data.sh
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
|
|
|
|
|
| 1 |
# 检查必要的环境变量
|
| 2 |
if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
|
| 3 |
echo "缺少必要的环境变量 WEBDAV_URL、WEBDAV_USERNAME 或 WEBDAV_PASSWORD"
|
|
@@ -9,10 +11,10 @@ mkdir -p ./data
|
|
| 9 |
|
| 10 |
# 从 WebDAV 拉取最新的备份
|
| 11 |
echo "正在从 WebDAV 拉取备份..."
|
| 12 |
-
LATEST_BACKUP=$(curl -s --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL" | grep -o 'webui_[0-9]\{8\}_[0-9]\{4\}\.db' | sort -r | head -n 1)
|
| 13 |
|
| 14 |
if [ -n "$LATEST_BACKUP" ]; then
|
| 15 |
-
curl -o ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$LATEST_BACKUP"
|
| 16 |
echo "已从 WebDAV 拉取备份: $LATEST_BACKUP"
|
| 17 |
else
|
| 18 |
echo "WebDAV 上未找到备份文件,将创建新的数据库。"
|
|
@@ -28,11 +30,11 @@ sync_data() {
|
|
| 28 |
# 检查是否存在要上传的文件
|
| 29 |
if [ -f ./data/webui.db ]; then
|
| 30 |
# 使用 curl 进行文件上传
|
| 31 |
-
curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
|
| 32 |
echo "WebDAV 上传成功: $FILENAME"
|
| 33 |
|
| 34 |
# 获取 WebDAV 上的所有备份文件
|
| 35 |
-
BACKUP_FILES=$(curl -s --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL" | grep -o 'webui_[0-9]\{8\}_[0-9]\{4\}\.db' | sort)
|
| 36 |
|
| 37 |
# 统计备份文件数量
|
| 38 |
NUM_BACKUPS=$(echo "$BACKUP_FILES" | wc -l)
|
|
@@ -40,13 +42,13 @@ sync_data() {
|
|
| 40 |
# 如果备份文件数量超过 20 个,则删除最旧的备份
|
| 41 |
if (( NUM_BACKUPS > 20 )); then
|
| 42 |
OLDEST_BACKUP=$(echo "$BACKUP_FILES" | head -n 1)
|
| 43 |
-
curl -X DELETE --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$OLDEST_BACKUP"
|
| 44 |
echo "已删除最旧的备份: $OLDEST_BACKUP"
|
| 45 |
fi
|
| 46 |
} || {
|
| 47 |
echo "WebDAV 上传失败,等待重试..."
|
| 48 |
sleep 10
|
| 49 |
-
curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
|
| 50 |
echo "重试失败,放弃 webdav 上传。"
|
| 51 |
}
|
| 52 |
}
|
|
@@ -64,4 +66,4 @@ sync_data() {
|
|
| 64 |
}
|
| 65 |
|
| 66 |
# 后台启动同步进程
|
| 67 |
-
sync_data &
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
# 检查必要的环境变量
|
| 4 |
if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
|
| 5 |
echo "缺少必要的环境变量 WEBDAV_URL、WEBDAV_USERNAME 或 WEBDAV_PASSWORD"
|
|
|
|
| 11 |
|
| 12 |
# 从 WebDAV 拉取最新的备份
|
| 13 |
echo "正在从 WebDAV 拉取备份..."
|
| 14 |
+
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)
|
| 15 |
|
| 16 |
if [ -n "$LATEST_BACKUP" ]; then
|
| 17 |
+
curl -o ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$LATEST_BACKUP"
|
| 18 |
echo "已从 WebDAV 拉取备份: $LATEST_BACKUP"
|
| 19 |
else
|
| 20 |
echo "WebDAV 上未找到备份文件,将创建新的数据库。"
|
|
|
|
| 30 |
# 检查是否存在要上传的文件
|
| 31 |
if [ -f ./data/webui.db ]; then
|
| 32 |
# 使用 curl 进行文件上传
|
| 33 |
+
curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$FILENAME" && {
|
| 34 |
echo "WebDAV 上传成功: $FILENAME"
|
| 35 |
|
| 36 |
# 获取 WebDAV 上的所有备份文件
|
| 37 |
+
BACKUP_FILES=$(curl -s --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui" | grep -o 'webui_[0-9]\{8\}_[0-9]\{4\}\.db' | sort)
|
| 38 |
|
| 39 |
# 统计备份文件数量
|
| 40 |
NUM_BACKUPS=$(echo "$BACKUP_FILES" | wc -l)
|
|
|
|
| 42 |
# 如果备份文件数量超过 20 个,则删除最旧的备份
|
| 43 |
if (( NUM_BACKUPS > 20 )); then
|
| 44 |
OLDEST_BACKUP=$(echo "$BACKUP_FILES" | head -n 1)
|
| 45 |
+
curl -X DELETE --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$OLDEST_BACKUP"
|
| 46 |
echo "已删除最旧的备份: $OLDEST_BACKUP"
|
| 47 |
fi
|
| 48 |
} || {
|
| 49 |
echo "WebDAV 上传失败,等待重试..."
|
| 50 |
sleep 10
|
| 51 |
+
curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/openwebui/$FILENAME" || {
|
| 52 |
echo "重试失败,放弃 webdav 上传。"
|
| 53 |
}
|
| 54 |
}
|
|
|
|
| 66 |
}
|
| 67 |
|
| 68 |
# 后台启动同步进程
|
| 69 |
+
sync_data &
|