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

Update start.sh

Browse files
Files changed (1) hide show
  1. start.sh +8 -8
start.sh CHANGED
@@ -1,7 +1,7 @@
1
  #!/bin/sh
2
  set -e
3
 
4
- echo "--- gpt-load WebDAV 启动与安全备份脚本 (V2.1 - 权限修复版) ---"
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.sha256"
13
 
14
  # --- 函数定义 ---
15
 
16
- # --- 修改点:在 tar 命令中增加权限忽略参数 ---
17
  restore_from_webdav() {
18
  if [ -z "$WEBDAV_URL" ] || [ -z "$WEBDAV_USERNAME" ] || [ -z "$WEBDAV_PASSWORD" ]; then
19
  echo "[Supervisor] WebDAV 环境变量未完全配置,跳过恢复。"
@@ -24,12 +24,12 @@ restore_from_webdav() {
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
- # 关键修复:添加 --no-same-owner 和 --no-same-permissions
28
- # 这会告诉 tar 不要尝试恢复文件的所有者和权限,从而避免权限错误
29
- tar -xzf "$BACKUP_ARCHIVE" -C "$DATA_DIR" --no-same-owner --no-same-permissions
30
 
31
  rm "$BACKUP_ARCHIVE"
32
- echo "[Supervisor] 数据恢复完成。"
33
  else
34
  echo "[Supervisor] WebDAV 上无可用备份文件。将使用本地数据或创建新数据。"
35
  fi
@@ -54,7 +54,7 @@ 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
- sha256sum "$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.2 - 强制容错版) ---"
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
+ 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 环境变量未完全配置,跳过恢复。"
 
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
34
  echo "[Supervisor] WebDAV 上无可用备份文件。将使用本地数据或创建新数据。"
35
  fi
 
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..."