ltxlong commited on
Commit
a2d546a
·
verified ·
1 Parent(s): 47c9490

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. sync_data.sh +38 -86
sync_data.sh CHANGED
@@ -1,112 +1,64 @@
1
-
2
 
3
  # 检查必要的环境变量
4
- if [ -z "$G_NAME" ] || [ -z "$G_TOKEN" ]; then
5
- echo "缺少必要的环境变量 G_NAMEG_TOKEN"
6
  exit 1
7
  fi
8
 
9
- # 解析仓库名和用户名
10
- IFS='/' read -r GITHUB_USER GITHUB_REPO <<< "$G_NAME"
11
 
12
- # 构建 GitHub 仓库的克隆 URL,包含令牌
13
- REPO_URL="https://${G_TOKEN}@github.com/${G_NAME}.git"
14
- mkdir -p ./data/github_data
15
- # 克隆仓库
16
- echo "正在克隆仓库……"
17
- git clone "$REPO_URL" ./data/github_data || {
18
- echo "克隆失败,请检查 G_NAME 和 G_TOKEN 是否正确。"
19
  exit 1
20
  }
21
-
22
- if [ -f ./data/github_data/webui.db ]; then
23
- cp ./data/github_data/webui.db ./data/webui.db
24
- echo "从 GitHub 仓库中拉取成功"
25
- else
26
- echo "GitHub 仓库中未找到 webui.db,将在同步时推送"
27
- fi
28
 
29
  # 定义同步函数
30
  sync_data() {
 
 
 
 
 
31
  while true; do
32
- # 1. 同步到 GitHub
33
  echo "正在开始同步"
34
- # 进入仓库目录
35
- cd ./data/github_data
36
- # 配置 Git 用户信息
37
- git config user.name "AutoSync Bot"
38
- git config user.email "[email protected]"
39
-
40
- # 确保在正确的分支
41
- git checkout main || git checkout master
42
-
43
- # 复制最新的数据库文件
44
- # cp ../webui.db ./webui.db
45
-
46
- if [ -f "../webui.db" ]; then
47
- cp ../webui.db ./webui.db
48
- else
49
- echo "数据库尚未初始化"
50
- fi
51
 
52
- # 检查是否有变化
53
- if [[ -n $(git status -s) ]]; then
54
- # 添加所有变更
55
- git add webui.db
 
 
56
 
57
- # 提交变更
58
- git commit -m "Auto sync webui.db $(date '+%Y-%m-%d %H:%M:%S')"
59
-
60
- # 推送到远程仓库
61
- git push origin HEAD && {
62
- echo "GitHub推送成功"
63
- }|| {
64
- echo "推送失败,等待重试..."
 
 
 
 
 
65
  sleep 10
66
- git push origin HEAD || {
67
- echo "重试失败,放弃推送到Github。"
68
  }
69
  }
70
- # 返回上级目录
71
- cd ..
72
- cd ..
73
-
74
- # 2. 同步到 WebDAV
75
- if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
76
- echo "WebDAV 环境变量缺失,跳过 WebDAV 同步。"
77
- else
78
- echo "同步到 WebDAV..."
79
- FILENAME="webui_$(date +'%m_%d').db"
80
- # 检查是否存在要上传的文件
81
- if [ -f ./data/webui.db ]; then
82
- # 使用 curl 进行文件上传
83
- curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
84
- echo "WebDAV 上传成功"
85
- } || {
86
- echo "WebDAV 上传失败,等待重试..."
87
- sleep 10
88
- curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
89
- echo "重试失败,放弃webdav上传。"
90
- }
91
- }
92
- else
93
- echo "未找到 webui.db 文件,跳过 WebDAV 同��"
94
- fi
95
- fi
96
-
97
-
98
  else
99
- # 返回上级目录
100
- cd ..
101
- cd ..
102
- echo "GitHub: 没有检测到数据库变化"
103
  fi
104
- # 3. 等待统一的时间间隔
105
- SYNC_INTERVAL=${SYNC_INTERVAL:-7200} # 默认间隔时间为 7200 秒
106
  echo "当前时间 $(date '+%Y-%m-%d %H:%M:%S')"
107
  echo "等待 ${SYNC_INTERVAL} 秒后进行下一次同步..."
108
  sleep $SYNC_INTERVAL
109
-
110
  done
111
  }
112
 
 
1
+ #!/bin/bash
2
 
3
  # 检查必要的环境变量
4
+ if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
5
+ echo "缺少必要的环境变量 WEBDAV_URL、WEBDAV_USERNAMEWEBDAV_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" || {
14
+ echo "下载失败,脚本退出"
 
 
 
15
  exit 1
16
  }
17
+ echo "下载成功"
 
 
 
 
 
 
18
 
19
  # 定义同步函数
20
  sync_data() {
21
+ # 首次等待同步间隔
22
+ SYNC_INTERVAL=${SYNC_INTERVAL:-7200} # 默认间隔时间为 7200 秒
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
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  else
55
+ echo "未找到 webui.db 文件,跳过同步"
 
 
 
56
  fi
57
+
58
+ # 等待下一次同步间隔
59
  echo "当前时间 $(date '+%Y-%m-%d %H:%M:%S')"
60
  echo "等待 ${SYNC_INTERVAL} 秒后进行下一次同步..."
61
  sleep $SYNC_INTERVAL
 
62
  done
63
  }
64