yangtb24 commited on
Commit
aa636f5
·
verified ·
1 Parent(s): 36eefbc

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. 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 &