wuran commited on
Commit
cc9e108
·
verified ·
1 Parent(s): de6a119

Update sync_data.sh

Browse files
Files changed (1) hide show
  1. sync_data.sh +17 -59
sync_data.sh CHANGED
@@ -35,12 +35,12 @@ restore_from_webdav() {
35
  fi
36
 
37
  # 多种匹配方式
38
- BACKUP_LIST1=$(echo "$RAW_RESPONSE" | grep -oE '<D:displayname[^>]*>[^<]*mcp_backup_[0-9]+_[0-9]+\.tar\.gz[^<]*</D:displayname>' | sed 's/<[^>]*>//g')
39
- BACKUP_LIST2=$(echo "$RAW_RESPONSE" | grep -oE 'href="[^"]*mcp_backup_[0-9]+_[0-9]+\.tar\.gz[^"]*"' | sed 's/.*href="[^"]*\///g' | sed 's/".*//g')
40
- BACKUP_LIST3=$(echo "$RAW_RESPONSE" | grep -oE 'mcp_backup_[0-9]+_[0-9]+\.tar\.gz')
41
 
42
  # 合并所有结果
43
- BACKUP_LIST=$(printf "%s\n%s\n%s\n" "$BACKUP_LIST1" "$BACKUP_LIST2" "$BACKUP_LIST3" | grep -v '^$' | sort -u | sort -r)
44
 
45
  if [ -z "$BACKUP_LIST" ]; then
46
  echo "未找到任何备份文件"
@@ -48,22 +48,16 @@ restore_from_webdav() {
48
  return 1
49
  fi
50
 
51
- echo "找到以下备份文件:"
52
- echo "$BACKUP_LIST" | head -5 | while read file; do echo " - $file"; done
53
- if [ $(echo "$BACKUP_LIST" | wc -l) -gt 5 ]; then
54
- echo " ... 等共 $(echo "$BACKUP_LIST" | wc -l) 个文件"
55
- fi
56
-
57
- # 尝试下载最新的备份文件
58
- LATEST_BACKUP=$(echo "$BACKUP_LIST" | head -1)
59
- echo "尝试下载最新备份: $LATEST_BACKUP"
60
 
61
- if curl -f --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$LATEST_BACKUP" -o "$RESTORE_DIR/$LATEST_BACKUP" 2>/dev/null; then
62
- echo "下载备份成功: $LATEST_BACKUP"
63
 
64
  # 解压缩备份文件
65
  cd "$RESTORE_DIR"
66
- tar -xzf "$LATEST_BACKUP" && {
67
  echo "解压缩备份文件成功"
68
 
69
  # 恢复配置文件
@@ -91,41 +85,7 @@ restore_from_webdav() {
91
  }
92
  cd - > /dev/null
93
  else
94
- echo "下载最新备份失败,尝试其他备份文件..."
95
-
96
- # 尝试前3个备份文件
97
- SUCCESS=0
98
- for backup_file in $(echo "$BACKUP_LIST" | head -3 | tail -n +2); do
99
- echo "尝试下载: $backup_file"
100
- if curl -f --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$backup_file" -o "$RESTORE_DIR/$backup_file" 2>/dev/null; then
101
- echo "下载成功,开始解压..."
102
- cd "$RESTORE_DIR"
103
- if tar -xzf "$backup_file"; then
104
- echo "解压成功,恢复文件..."
105
-
106
- # 恢复配置文件
107
- if [ -d "config" ] && [ "$(ls -A config 2>/dev/null)" ]; then
108
- mkdir -p /mcp-proxy-server/config
109
- cp -r config/* /mcp-proxy-server/config/
110
- echo "config 目录恢复成功"
111
- fi
112
-
113
- if [ -d "tools" ] && [ "$(ls -A tools 2>/dev/null)" ]; then
114
- mkdir -p /tools
115
- cp -r tools/* /tools/
116
- echo "tools 目录恢复成功"
117
- fi
118
-
119
- SUCCESS=1
120
- break
121
- fi
122
- cd - > /dev/null
123
- fi
124
- done
125
-
126
- if [ "$SUCCESS" = "0" ]; then
127
- echo "无法下载任何可用的备份文件"
128
- fi
129
  fi
130
 
131
  # 清理临时目录
@@ -149,14 +109,12 @@ fi
149
 
150
  # 定义同步函数(只使用WebDAV)
151
  sync_data() {
152
- # 删除时间戳检查相关代码
 
153
 
154
  while true; do
155
  echo "开始定期备份..."
156
 
157
- # 使用时间戳创建备份文件名
158
- FILENAME="mcp_backup_$(date +'%Y%m%d_%H%M').tar.gz"
159
-
160
  # 创建临时备份压缩包
161
  TEMP_DIR="$WORK_DIR/temp_backup"
162
  rm -rf "$TEMP_DIR"
@@ -210,14 +168,14 @@ sync_data() {
210
 
211
  # 创建压缩包并上传
212
  if [ "$BACKUP_CREATED" = "1" ] && [ "$(ls -A $TEMP_DIR)" ]; then
213
- (cd "$TEMP_DIR" && tar -czf "../$FILENAME" .)
214
 
215
- if curl -T "$WORK_DIR/$FILENAME" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$FILENAME" >/dev/null 2>&1; then
216
- echo "WebDAV备份上传成功: $FILENAME"
217
  else
218
  echo "WebDAV备份上传失败"
219
  fi
220
- rm -f "$WORK_DIR/$FILENAME"
221
  else
222
  echo "无文件可备份"
223
  fi
 
35
  fi
36
 
37
  # 多种匹配方式
38
+ BACKUP_LIST1=$(echo "$RAW_RESPONSE" | grep -oE '<D:displayname[^>]*>[^<]*mcp_backup\.tar\.gz[^<]*</D:displayname>' | sed 's/<[^>]*>//g')
39
+ BACKUP_LIST2=$(echo "$RAW_RESPONSE" | grep -oE 'href="[^"]*mcp_backup\.tar\.gz[^"]*"' | sed 's/.*href="[^"]*\///g' | sed 's/".*//g')
40
+ BACKUP_LIST3=$(echo "$RAW_RESPONSE" | grep -oE 'mcp_backup\.tar\.gz')
41
 
42
  # 合并所有结果
43
+ BACKUP_LIST=$(printf "%s\n%s\n%s\n" "$BACKUP_LIST1" "$BACKUP_LIST2" "$BACKUP_LIST3" | grep -v '^$' | sort -u)
44
 
45
  if [ -z "$BACKUP_LIST" ]; then
46
  echo "未找到任何备份文件"
 
48
  return 1
49
  fi
50
 
51
+ # 使用固定文件名下载备份
52
+ BACKUP_FILE="mcp_backup.tar.gz"
53
+ echo "尝试下载最新备份: $BACKUP_FILE"
 
 
 
 
 
 
54
 
55
+ if curl -f --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$BACKUP_FILE" -o "$RESTORE_DIR/$BACKUP_FILE" 2>/dev/null; then
56
+ echo "下载备份成功: $BACKUP_FILE"
57
 
58
  # 解压缩备份文件
59
  cd "$RESTORE_DIR"
60
+ tar -xzf "$BACKUP_FILE" && {
61
  echo "解压缩备份文件成功"
62
 
63
  # 恢复配置文件
 
85
  }
86
  cd - > /dev/null
87
  else
88
+ echo "下载备份失败: $BACKUP_FILE"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  fi
90
 
91
  # 清理临时目录
 
109
 
110
  # 定义同步函数(只使用WebDAV)
111
  sync_data() {
112
+ # 使用固定备份文件名
113
+ BACKUP_FILE="mcp_backup.tar.gz"
114
 
115
  while true; do
116
  echo "开始定期备份..."
117
 
 
 
 
118
  # 创建临时备份压缩包
119
  TEMP_DIR="$WORK_DIR/temp_backup"
120
  rm -rf "$TEMP_DIR"
 
168
 
169
  # 创建压缩包并上传
170
  if [ "$BACKUP_CREATED" = "1" ] && [ "$(ls -A $TEMP_DIR)" ]; then
171
+ (cd "$TEMP_DIR" && tar -czf "../$BACKUP_FILE" .)
172
 
173
+ if curl -T "$WORK_DIR/$BACKUP_FILE" --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$BACKUP_FILE" >/dev/null 2>&1; then
174
+ echo "WebDAV备份上传成功: $BACKUP_FILE"
175
  else
176
  echo "WebDAV备份上传失败"
177
  fi
178
+ rm -f "$WORK_DIR/$BACKUP_FILE"
179
  else
180
  echo "无文件可备份"
181
  fi