ltxlong commited on
Commit
15c871e
·
verified ·
1 Parent(s): 54d3870

Create sync.sh

Browse files
Files changed (1) hide show
  1. sync.sh +78 -0
sync.sh ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # 注意:检查必要的环境变量
4
+ if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
5
+ echo "注意:缺少必要的环境变量 WEBDAV_URL、WEBDAV_USERNAME 或 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" || {
14
+ echo "下载失败,脚本退出"
15
+ exit 1
16
+ }
17
+ echo "下载成功"
18
+
19
+ # 定义同步函数
20
+ sync() {
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
+ # 计算文件编号(0-11,每2小时递增1)(2个小时备份一次)
33
+ FILE_NUMBER=$(($(date +%H) / 2))
34
+ FILENAME="webui_${FILE_NUMBER}.db"
35
+
36
+ # 计算文件编号(日期)
37
+ DATE_STR=$(date +'%m_%d')
38
+ FILENAME_M_D="webui_${DATE_STR}.db"
39
+
40
+ echo "同步到 WebDAV..."
41
+
42
+ # 上传以小时命名的数据库文件
43
+ curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
44
+ echo " WebDAV (小时命名) 上传成功: $FILENAME"
45
+
46
+ # 上传以日期命名的数据库文件
47
+ curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/year_all_month_day_data/$FILENAME_M_D" && {
48
+ echo " WebDAV (日期命名) 上传成功: $FILENAME_M_D"
49
+
50
+ # 覆盖Webdav目录下默认的webui.db文件(方便下次拉取的时候就是最新版本)
51
+ curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/webui.db" && {
52
+ echo " WebDAV 更新主文件成功"
53
+ } || {
54
+ echo " WebDAV 更新主文件失败"
55
+ }
56
+ } || {
57
+ echo " WebDAV(日期命名) 上传失败"
58
+ }
59
+ } || {
60
+ echo " WebDAV(小时命名)上传失败,等待重试..."
61
+ sleep 10
62
+ curl -L -T "./data/webui.db" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" || {
63
+ echo "重试失败,放弃上传。"
64
+ }
65
+ }
66
+ else
67
+ echo "未找到 webui.db 文件,跳过同步"
68
+ fi
69
+
70
+ # 等待下一次同步间隔
71
+ echo "当前时间 $(date '+%Y-%m-%d %H:%M:%S')"
72
+ echo "等待 ${SYNC_INTERVAL} 秒后进行下一次同步..."
73
+ sleep $SYNC_INTERVAL
74
+ done
75
+ }
76
+
77
+ # 后台启动同步进程
78
+ sync &