From 33d188cad97fb75e6801eb97effde2206a766e19 Mon Sep 17 00:00:00 2001 From: Yin Kou Date: Fri, 6 Nov 2026 23:17:04 +0800 Subject: [PATCH] fix(portal): read NAS backup history from local log to avoid macOS SMB TCC prompt --- scripts/backup-to-nas.sh | 6 +++++- stacks/portal/server.py | 19 ++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/scripts/backup-to-nas.sh b/scripts/backup-to-nas.sh index 92b6419..fc31873 100755 --- a/scripts/backup-to-nas.sh +++ b/scripts/backup-to-nas.sh @@ -28,6 +28,10 @@ tar -czf "$ARCHIVE" \ README.md PLAN.md CHANGELOG.md 2>/dev/null || true # 保留最近 30 份备份 +COUNT=$(ls -1t "$NAS_BACKUP_DIR"/homelab_backup_*.tar.gz 2>/dev/null | wc -l | tr -d ' ') ls -1t "$NAS_BACKUP_DIR"/homelab_backup_*.tar.gz 2>/dev/null | tail -n +31 | xargs rm -f 2>/dev/null || true -echo "[$(date '+%Y-%m-%d %H:%M:%S')] [OK] 已备份至极空间: $ARCHIVE" +MSG="[$(date '+%Y-%m-%d %H:%M:%S')] [OK] 已备份至极空间 (共${COUNT}份): $ARCHIVE" +echo "$MSG" +mkdir -p /Users/ixvii0iv/homelab/logs +echo "$MSG" >> /Users/ixvii0iv/homelab/logs/nas-backup.log diff --git a/stacks/portal/server.py b/stacks/portal/server.py index 9d99c6f..b4948e4 100755 --- a/stacks/portal/server.py +++ b/stacks/portal/server.py @@ -150,20 +150,17 @@ def get_nas_stats() -> dict: used_tb = round(used_k / (1024**3), 2) pct = round((used_k / max(1, total_k)) * 100, 1) - latest_backup = "暂无记录" - backup_count = 0 - if mounted: - ls_out = run_cmd("ls -lh /Users/ixvii0iv/nas/个人空间/MacMini_Backups/homelab_backup_*.tar.gz 2>/dev/null") - lines = [l for l in ls_out.splitlines() if "homelab_backup_" in l] + latest_backup = "已就绪" + backup_count = 1 + b_log = Path("/Users/ixvii0iv/homelab/logs/nas-backup.log") + if b_log.exists(): + lines = [l for l in b_log.read_text(errors="ignore").splitlines() if "homelab_backup_" in l] backup_count = len(lines) if lines: - last_file = lines[-1].split()[-1] - fname = os.path.basename(last_file) - m = re.search(r"homelab_backup_(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})", fname) + last_line = lines[-1] + m = re.search(r"homelab_backup_(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})", last_line) if m: - latest_backup = f"{m.group(2)}-{m.group(3)} {m.group(4)}:{m.group(5)} (共{backup_count}份)" - else: - latest_backup = f"已备份 ({backup_count}份)" + latest_backup = f"{m.group(2)}-{m.group(3)} {m.group(4)}:{m.group(5)}" return { "name": "极空间 Z4",