MadisonWirtanen commited on
Commit
e203d2f
·
verified ·
1 Parent(s): 93e487f

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. sync_data.sh +47 -16
sync_data.sh CHANGED
@@ -6,8 +6,20 @@ if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD"
6
  exit 1
7
  fi
8
 
 
9
  mkdir -p ./data
10
 
 
 
 
 
 
 
 
 
 
 
 
11
  # 从 WebDAV 下载webui.db文件
12
  echo "正在从 WebDAV 下载数据库文件..."
13
  curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" -o "./data/webui.db" || {
@@ -23,31 +35,50 @@ sync_data() {
23
  echo "初始下载完成,等待 ${SYNC_INTERVAL} 秒后开始同步..."
24
  sleep $SYNC_INTERVAL
25
 
 
 
 
26
  while true; do
27
  echo "正在开始同步"
28
-
29
  # 检查数据库文件是否存在
30
  if [ -f "./data/webui.db" ]; then
31
- # 生成当前时间的文件名
32
- FILENAME="webui_$(date +'%m_%d_%H%M').db"
33
 
34
- echo "同步到 WebDAV..."
 
35
 
36
- # 上传以日期命名的数据库文件
37
- curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
38
- echo "WebDAV 上传成功: $FILENAME"
39
-
40
-
41
- # 覆盖Webdav目录下默认的webui.db文件(方便下次拉取的时候就是最新版本)
42
- curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" && {
43
- echo "WebDAV 更新主文件成功"
44
- } || {
45
- echo "WebDAV 更新主文件失败"
 
 
 
 
 
 
 
 
 
 
46
  }
 
 
 
 
 
 
47
  } || {
48
- echo "WebDAV 上传失败,等待重试..."
49
  sleep 10
50
- curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
51
  echo "重试失败,放弃上传。"
52
  }
53
  }
 
6
  exit 1
7
  fi
8
 
9
+ # 创建数据目录
10
  mkdir -p ./data
11
 
12
+ # 获取最新的带日期的数据库文件名
13
+ get_latest_dated_file() {
14
+ curl -s --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL" | grep -o 'webui_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{4\}.db' | sort -r | head -n 1
15
+ }
16
+
17
+ # 从文件名中提取日期
18
+ get_date_from_filename() {
19
+ local filename=$1
20
+ echo "$filename" | grep -o '[0-9]\{2\}_[0-9]\{2\}' | head -n 1
21
+ }
22
+
23
  # 从 WebDAV 下载webui.db文件
24
  echo "正在从 WebDAV 下载数据库文件..."
25
  curl -L --fail --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" -o "./data/webui.db" || {
 
35
  echo "初始下载完成,等待 ${SYNC_INTERVAL} 秒后开始同步..."
36
  sleep $SYNC_INTERVAL
37
 
38
+ # 记录上次上传的日期
39
+ LAST_UPLOAD_DATE=""
40
+
41
  while true; do
42
  echo "正在开始同步"
 
43
  # 检查数据库文件是否存在
44
  if [ -f "./data/webui.db" ]; then
45
+ # 获取当前日期
46
+ CURRENT_DATE=$(date +'%m_%d')
47
 
48
+ # 需要上传带日期的文件标志
49
+ NEED_DATED_UPLOAD=false
50
 
51
+ # 如果没有记录上次上传日期,从WebDAV获取最新的带日期文件
52
+ if [ -z "$LAST_UPLOAD_DATE" ]; then
53
+ LATEST_FILE=$(get_latest_dated_file)
54
+ if [ ! -z "$LATEST_FILE" ]; then
55
+ LAST_UPLOAD_DATE=$(get_date_from_filename "$LATEST_FILE")
56
+ fi
57
+ fi
58
+
59
+ # 如果上次上传日期与当前日期不同,需要上传带日期的文件
60
+ if [ "$LAST_UPLOAD_DATE" != "$CURRENT_DATE" ]; then
61
+ NEED_DATED_UPLOAD=true
62
+ LAST_UPLOAD_DATE=$CURRENT_DATE
63
+ fi
64
+
65
+ # 如果需要上传带日期的文件
66
+ if [ "$NEED_DATED_UPLOAD" = true ]; then
67
+ FILENAME="webui_${CURRENT_DATE}_$(date +'%H%M').db"
68
+ echo "上传带日期的文件到 WebDAV..."
69
+ curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
70
+ echo "带日期文件上传失败"
71
  }
72
+ fi
73
+
74
+ # 始终更新主文件
75
+ echo "更新主文件到 WebDAV..."
76
+ curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" && {
77
+ echo "WebDAV 更新主文件成功"
78
  } || {
79
+ echo "WebDAV 更新主文件失败,尝试重试..."
80
  sleep 10
81
+ curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" || {
82
  echo "重试失败,放弃上传。"
83
  }
84
  }