Update start.sh
Browse files
start.sh
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
#!/bin/sh
|
| 2 |
set -e
|
| 3 |
|
| 4 |
-
echo "--- gpt-load WebDAV 启动与安全备份脚本 (V2.
|
| 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 |
-
|
|
|
|
| 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
|
|
|
|
| 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..."
|