rytfh commited on
Commit
cec9367
·
verified ·
1 Parent(s): 6e9bdd6

Update start.sh

Browse files
Files changed (1) hide show
  1. start.sh +5 -9
start.sh CHANGED
@@ -1,7 +1,7 @@
1
  #!/bin/sh
2
  set -e
3
 
4
- echo "--- gpt-load WebDAV 启动与安全备份脚本 (V2.2 - 强制容错版) ---"
5
 
6
  # --- 配置 ---
7
  DATA_DIR="/app/data"
@@ -9,11 +9,11 @@ DB_FILE_PATH="${DATA_DIR}/gpt-load.db"
9
  DB_BACKUP_PATH="/tmp/gpt-load.db.snapshot"
10
  BACKUP_ARCHIVE="/tmp/gptload_backup.tar.gz"
11
  REMOTE_ARCHIVE_FILENAME="gptload_backup.tar.gz"
12
- CHECKSUM_FILE="/app/data/gptload_backup.sha26"
 
13
 
14
  # --- 函数定义 ---
15
 
16
- # --- 修改点:在 tar 命令后添加 || true 以忽略错误 ---
17
  restore_from_webdav() {
18
  if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
19
  echo "[Supervisor] WebDAV 环境变量未完全配置,跳过恢复。"
@@ -23,11 +23,7 @@ restore_from_webdav() {
23
  mkdir -p "$DATA_DIR"
24
  if curl --fail --silent --show-error -L --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$REMOTE_ARCHIVE_FILENAME" -o "$BACKUP_ARCHIVE"; then
25
  echo "[Supervisor] 成功从 WebDAV 下载备份,正在解压..."
26
-
27
- # 关键修复:在命令末尾添加 || true
28
- # 这会告诉 shell:即使 tar 命令因为权限问题失败了,也假装它成功了(返回 true),从而防止 set -e 中断脚本
29
  tar -xzf "$BACKUP_ARCHIVE" -C "$DATA_DIR" || true
30
-
31
  rm "$BACKUP_ARCHIVE"
32
  echo "[Supervisor] 数据恢复完成(已忽略权限错误)。"
33
  else
@@ -35,7 +31,6 @@ restore_from_webdav() {
35
  fi
36
  }
37
 
38
- # (start_backup_loop 函数保持不变)
39
  start_backup_loop() {
40
  if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
41
  echo "[Backup Loop] WebDAV 环境变量未配置,备份功能禁用。"
@@ -54,7 +49,8 @@ start_backup_loop() {
54
  tar -czf "$BACKUP_ARCHIVE" -C "$DATA_DIR" $(ls -A "$DATA_DIR" | grep -v 'gpt-load.db' || true) -C /tmp gpt-load.db
55
  rm "/tmp/gpt-load.db"
56
 
57
- sha25um "$BACKUP_ARCHIVE" > "${CHECKSUM_FILE}.new"
 
58
 
59
  if ! cmp -s "${CHECKSUM_FILE}.new" "$CHECKSUM_FILE" 2>/dev/null; then
60
  echo "[Backup Loop] 检测到数据变化,开始上传到 WebDAV..."
 
1
  #!/bin/sh
2
  set -e
3
 
4
+ echo "--- gpt-load WebDAV 启动与安全备份脚本 (V2.3 - 最终修正版) ---"
5
 
6
  # --- 配置 ---
7
  DATA_DIR="/app/data"
 
9
  DB_BACKUP_PATH="/tmp/gpt-load.db.snapshot"
10
  BACKUP_ARCHIVE="/tmp/gptload_backup.tar.gz"
11
  REMOTE_ARCHIVE_FILENAME="gptload_backup.tar.gz"
12
+ # 关键修复 #1: 将 sha26 修正为 sha256
13
+ CHECKSUM_FILE="/app/data/gptload_backup.sha256"
14
 
15
  # --- 函数定义 ---
16
 
 
17
  restore_from_webdav() {
18
  if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
19
  echo "[Supervisor] WebDAV 环境变量未完全配置,跳过恢复。"
 
23
  mkdir -p "$DATA_DIR"
24
  if curl --fail --silent --show-error -L --user "$WEBDAV_USERNAME:$WEBDAV_PASSWORD" "$WEBDAV_URL/$REMOTE_ARCHIVE_FILENAME" -o "$BACKUP_ARCHIVE"; then
25
  echo "[Supervisor] 成功从 WebDAV 下载备份,正在解压..."
 
 
 
26
  tar -xzf "$BACKUP_ARCHIVE" -C "$DATA_DIR" || true
 
27
  rm "$BACKUP_ARCHIVE"
28
  echo "[Supervisor] 数据恢复完成(已忽略权限错误)。"
29
  else
 
31
  fi
32
  }
33
 
 
34
  start_backup_loop() {
35
  if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
36
  echo "[Backup Loop] WebDAV 环境变量未配置,备份功能禁用。"
 
49
  tar -czf "$BACKUP_ARCHIVE" -C "$DATA_DIR" $(ls -A "$DATA_DIR" | grep -v 'gpt-load.db' || true) -C /tmp gpt-load.db
50
  rm "/tmp/gpt-load.db"
51
 
52
+ # 关键修复 #2: 将 sha25um 修正为 sha256sum
53
+ sha256sum "$BACKUP_ARCHIVE" > "${CHECKSUM_FILE}.new"
54
 
55
  if ! cmp -s "${CHECKSUM_FILE}.new" "$CHECKSUM_FILE" 2>/dev/null; then
56
  echo "[Backup Loop] 检测到数据变化,开始上传到 WebDAV..."