cky2024 commited on
Commit
bec9c3c
·
verified ·
1 Parent(s): b35ca85

Update sync_data.sh

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