JerryZhouYG commited on
Commit
93409a3
·
verified ·
1 Parent(s): 5e09171

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. sync_data.sh +76 -70
sync_data.sh CHANGED
@@ -1,4 +1,4 @@
1
-
2
 
3
  # 检查必要的环境变量
4
  if [ -z "$G_NAME" ] || [ -z "$G_TOKEN" ]; then
@@ -29,84 +29,90 @@ fi
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:-3600} # 默认间隔时间为 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 "$G_NAME" ] || [ -z "$G_TOKEN" ]; then
 
29
  # 定义同步函数
30
  sync_data() {
31
  while true; do
32
+ # 获取当前北京时间的小时
33
+ current_hour=$(date -d "Asia/Shanghai" +%H)
34
+
35
+ # 判断是否在北京时间 8:00-24:00 之间
36
+ if (( current_hour >= 8 && current_hour <= 24 )); then
37
+ # 1. 同步到 GitHub
38
+ echo "正在开始同步到 GitHub"
39
+ # 进入仓库目录
40
+ cd ./data/github_data
41
+ # 配置 Git 用户信息
42
+ git config user.name "AutoSync Bot"
43
+ git config user.email "[email protected]"
44
+
45
+ # 确保在正确的分支
46
+ git checkout main || git checkout master
47
+
48
+ # 复制最新的数据库文件
49
+ if [ -f "../webui.db" ]; then
50
+ cp ../webui.db ./webui.db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  else
52
+ echo "数据库尚未初始化"
53
+ fi
54
+
55
+ # 检查是否有变化
56
+ if [[ -n $(git status -s) ]]; then
57
+ # 添加所有变更
58
+ git add webui.db
59
+
60
+ # 提交变更
61
+ git commit -m "Auto sync webui.db $(date '+%Y-%m-%d %H:%M:%S')"
62
+
63
+ # 推送到远程仓库
64
+ git push origin HEAD && {
65
+ echo "GitHub推送成功"
66
+ }|| {
67
+ echo "GitHub 推送失败,等待重试..."
68
+ sleep 10
69
+ git push origin HEAD || {
70
+ echo "重试失败,放弃推送到Github。"
71
  }
72
+ }
73
+ # 返回上级目录
74
+ cd ..
75
+ cd ..
76
+
77
+ # 2. 同步到 WebDAV
78
+ if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
79
+ echo "WebDAV 环境变量缺失,跳过 WebDAV 同步。"
80
  else
81
+ echo "同步到 WebDAV..."
82
+ FILENAME="webui_$(date +'%m_%d').db"
83
+ # 检查是否存在要上传的文件
84
+ if [ -f ./data/webui.db ]; then
85
+ # 使用 curl 进行文件上传
86
+ curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
87
+ echo "WebDAV 上传成功"
88
+ } || {
89
+ echo "WebDAV 上传失败,等待重试..."
90
+ sleep 10
91
+ curl -T ./data/webui.db --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
92
+ echo "重试失败,放弃webdav上传。"
93
+ }
94
+ }
95
+ else
96
+ echo "未找到 webui.db 文件,跳过 WebDAV 同步"
97
+ fi
98
  fi
 
99
 
100
 
101
+ else
102
+ # 返回上级目录
103
+ cd ..
104
+ cd ..
105
+ echo "GitHub: 没有检测到数据库变化"
106
+ fi
107
  else
108
+ echo "当前时间 $(date -d 'Asia/Shanghai' '+%Y-%m-%d %H:%M:%S'),不在同步时间范围内 (8:00-24:00),跳过同步。"
 
 
 
109
  fi
 
 
 
 
 
110
 
111
+ # 计算到下一个整点的秒数 (北京时间)
112
+ seconds_to_wait=$(( (60 - $(date -d "Asia/Shanghai" +%M)) * 60 ))
113
+ echo "当前北京时间 $(date -d 'Asia/Shanghai' '+%Y-%m-%d %H:%M:%S')"
114
+ echo "等待 ${seconds_to_wait} 秒后进行下一次同步 (到下一个整点)..."
115
+ sleep $seconds_to_wait
116
  done
117
  }
118