leezhuuu commited on
Commit
ab548aa
·
verified ·
1 Parent(s): 066bcfe

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. sync_data.sh +120 -120
sync_data.sh CHANGED
@@ -1,120 +1,120 @@
1
- # #!/bin/bash
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
- # # 获取当前北京时间的小时
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 "autosync@bot.com"
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
-
119
- # # 后台启动同步进程
120
- # sync_data &
 
1
+ #!/bin/bash
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
+ # 获取当前北京时间的小时
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 "autosync@bot.com"
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
+
119
+ # 后台启动同步进程
120
+ sync_data &