aBER0724 commited on
Commit
5e4ecb6
·
verified ·
1 Parent(s): 32a80bd

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. sync_data.sh +42 -19
sync_data.sh CHANGED
@@ -19,31 +19,52 @@ restore_from_webdav() {
19
 
20
  echo "正在从 WebDAV 恢复配置文件..."
21
 
22
- # 获取今天的备份文件名
23
- TODAY_FILENAME="mcp_backup_$(date +'%m_%d').tar.gz"
24
- YESTERDAY_FILENAME="mcp_backup_$(date -d '1 day ago' +'%m_%d').tar.gz"
25
-
26
  # 创建临时恢复目录
27
  RESTORE_DIR="$WORK_DIR/webdav_restore"
28
  mkdir -p "$RESTORE_DIR"
29
 
30
- # 尝试下载今天的备份,如果失败则尝试昨天的
31
  DOWNLOAD_SUCCESS=0 # 0 = 失败, 1 = 成功
32
 
33
- echo "尝试下载今天的备份: $TODAY_FILENAME"
34
- if curl -f --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$TODAY_FILENAME" -o "$RESTORE_DIR/$TODAY_FILENAME" 2>/dev/null; then
35
- BACKUP_FILE="$TODAY_FILENAME"
36
- DOWNLOAD_SUCCESS=1
37
- echo "下载今天的备份成功"
38
- else
39
- echo "今天的备份不存在,尝试下载昨天的备份: $YESTERDAY_FILENAME"
40
- if curl -f --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$YESTERDAY_FILENAME" -o "$RESTORE_DIR/$YESTERDAY_FILENAME" 2>/dev/null; then
41
- BACKUP_FILE="$YESTERDAY_FILENAME"
 
 
 
 
 
 
42
  DOWNLOAD_SUCCESS=1
43
- echo "下载昨天的备份成功"
44
- else
45
- echo "无法下载 WebDAV 备份文件"
46
  fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  fi
48
 
49
  if [ "$DOWNLOAD_SUCCESS" = "1" ]; then
@@ -219,7 +240,8 @@ sync_data() {
219
  echo "WebDAV 环境变量缺失,跳过 WebDAV 同步。"
220
  else
221
  echo "同步到 WebDAV..."
222
- FILENAME="mcp_backup_$(date +'%m_%d').tar.gz"
 
223
 
224
  # 创建临时备份压缩包(使用独立目录)
225
  TEMP_DIR="$WORK_DIR/temp_backup"
@@ -247,9 +269,10 @@ sync_data() {
247
  tar -czf "../$FILENAME" .
248
  cd - > /dev/null
249
 
 
250
  # 使用 curl 进行文件上传
251
  curl -T "$WORK_DIR/$FILENAME" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
252
- echo "WebDAV 上传成功"
253
  } || {
254
  echo "WebDAV 上传失败,等待重试..."
255
  sleep 10
 
19
 
20
  echo "正在从 WebDAV 恢复配置文件..."
21
 
 
 
 
 
22
  # 创建临时恢复目录
23
  RESTORE_DIR="$WORK_DIR/webdav_restore"
24
  mkdir -p "$RESTORE_DIR"
25
 
26
+ # 尝试下载最近的备份文件(按时间倒序)
27
  DOWNLOAD_SUCCESS=0 # 0 = 失败, 1 = 成功
28
 
29
+ # 计算同步间隔的分钟数
30
+ SYNC_INTERVAL_MINUTES=$((${SYNC_INTERVAL:-7200} / 60))
31
+
32
+ echo "根据同步间隔 ${SYNC_INTERVAL:-7200} 秒(${SYNC_INTERVAL_MINUTES}分钟)查找备份文件..."
33
+
34
+ # 尝试最近几个同步周期的备份
35
+ for i in $(seq 0 20); do # 最多尝试20个周期
36
+ # 计算备份时间点(向前推 i 个同步间隔)
37
+ MINUTES_AGO=$((i * SYNC_INTERVAL_MINUTES))
38
+ BACKUP_TIME=$(date -d "$MINUTES_AGO minutes ago" +'%Y%m%d_%H%M')
39
+ BACKUP_FILENAME="mcp_backup_$BACKUP_TIME.tar.gz"
40
+
41
+ echo "尝试下载备份: $BACKUP_FILENAME"
42
+ if curl -f --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$BACKUP_FILENAME" -o "$RESTORE_DIR/$BACKUP_FILENAME" 2>/dev/null; then
43
+ BACKUP_FILE="$BACKUP_FILENAME"
44
  DOWNLOAD_SUCCESS=1
45
+ echo "下载备份成功: $BACKUP_FILENAME"
46
+ break
 
47
  fi
48
+ done
49
+
50
+ # 如果按间隔没找到,尝试最近几个小时的备份(每5分钟一个点)
51
+ if [ "$DOWNLOAD_SUCCESS" = "0" ]; then
52
+ echo "按同步间隔未找到备份,尝试最近几个小时的备份..."
53
+ for minutes in $(seq 0 5 300); do # 0到300分钟,每5分钟一个点
54
+ BACKUP_TIME=$(date -d "$minutes minutes ago" +'%Y%m%d_%H%M')
55
+ BACKUP_FILENAME="mcp_backup_$BACKUP_TIME.tar.gz"
56
+
57
+ if curl -f --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$BACKUP_FILENAME" -o "$RESTORE_DIR/$BACKUP_FILENAME" 2>/dev/null; then
58
+ BACKUP_FILE="$BACKUP_FILENAME"
59
+ DOWNLOAD_SUCCESS=1
60
+ echo "找到备份文件: $BACKUP_FILENAME"
61
+ break
62
+ fi
63
+ done
64
+ fi
65
+
66
+ if [ "$DOWNLOAD_SUCCESS" = "0" ]; then
67
+ echo "无法找到任何可用的备份文件"
68
  fi
69
 
70
  if [ "$DOWNLOAD_SUCCESS" = "1" ]; then
 
240
  echo "WebDAV 环境变量缺失,跳过 WebDAV 同步。"
241
  else
242
  echo "同步到 WebDAV..."
243
+ # 使用时间戳(年月日时分),每次同步都创建新备份
244
+ FILENAME="mcp_backup_$(date +'%Y%m%d_%H%M').tar.gz"
245
 
246
  # 创建临时备份压缩包(使用独立目录)
247
  TEMP_DIR="$WORK_DIR/temp_backup"
 
269
  tar -czf "../$FILENAME" .
270
  cd - > /dev/null
271
 
272
+ echo "上传备份文件: $FILENAME (按 ${SYNC_INTERVAL:-7200} 秒间隔)"
273
  # 使用 curl 进行文件上传
274
  curl -T "$WORK_DIR/$FILENAME" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" && {
275
+ echo "WebDAV 上传成功: $FILENAME"
276
  } || {
277
  echo "WebDAV 上传失败,等待重试..."
278
  sleep 10