runtime-retention-assessment.md 4.69 KB

BettaFish 运行时冷备份与空目录保留评估

状态:Active
更新时间:2026-04-09

1. 目的

本文件用于承接 T-113,评估 var/ 下当前最容易被误判为“无用目录”的两类对象:

  • 冷迁移后保留的运行时备份目录
  • 运行过程中自然产生的空目录

目标不是立即删除它们,而是先明确哪些属于正常结构、哪些属于可控回收对象。

2. 评估结果

路径 文件数 目录数 空目录数 体积 当前判断
var/backups/runtime-migration/20260407/t108/ 6475 231 20 385.27 MB 冷备份,暂时保留
var/crawler/browser_data/ 5013 203 7 337.49 MB 运行态浏览器数据,保留
var/db/postgres/ 17890 3239 910 1.12 GB 运行态数据库卷,保留
var/output/ 4 1 0 2.49 MB chrome-headless scratch 已清理,仅保留截图产物
var/reports/final/ 4 3 2 0.18 MB 报告骨架目录,保留
var/logs/ 25 5 1 1.07 MB 日志目录骨架,保留

补充说明:

  • 本轮尝试执行 docker ps -a 时,本机 Docker daemon 不可用,因此本评估没有依赖容器在线状态。
  • 空目录统计中,命中的目录主要来自 PostgreSQL 标准目录、Chromium profile 目录和 scratch 目录,不属于源码树垃圾。
  • 2026-04-09 已补充运行态复核:5000 端口当前由 python -m apps.web_api 提供服务,scripts.dev.start_local 监控进程仍在运行。
  • 同轮进程复核显示,活跃 Chrome / Playwright 进程使用的是用户目录下的 C:\\Users\\wanzh\\AppData\\Local\\ms-playwright\\... profile,而不是仓内 var/output/chrome-headless/

3. 分类结论

3.1 A 类:必须保留的冷备份

对象:

  • var/backups/runtime-migration/20260407/t108/

判断依据:

  • 该目录保存的是 T-108 冷迁移时的完整回滚基线。
  • 目前仍没有新的外部备份或“迁移后保留窗口已结束”的明确信号。
  • 即使其中存在空目录,这些空目录也属于 PostgreSQL / Chromium 原始目录结构的一部分,不应按“无用空目录”理解。

当前建议:

  • 保留
  • 不做单独空目录删除
  • 后续若要回收,先完成“替代备份已存在 + 回滚窗口结束 + 服务停止检查”三项前置条件

3.2 B 类:必须保留的结构性空目录

对象:

  • var/db/postgres/pg_commit_tspg_dynshmempg_notifypg_replslot 等 PostgreSQL 子目录
  • var/crawler/browser_data/*/Default/blob_storage/<uuid> 等浏览器 profile 子目录
  • var/reports/final/chaptersvar/reports/final/ir
  • var/logs/json_repair_failures

判断依据:

  • 这些目录虽然当前为空,但属于运行时程序预期的结构骨架。
  • 单独删除它们不会显著节省空间,却可能干扰后续工具对路径存在性的假设。

当前建议:

  • 保留
  • 不按“空目录清理”处理

3.3 C 类:已执行的可控回收对象

对象:

  • var/output/chrome-headless/ 及其下属 scratch/cache 目录

判断依据:

  • T-114 执行前,该目录体积约 18.50 MB,含 57 个空目录,明显更像临时浏览器运行产物,而不是长期资产。
  • 2026-04-09 已确认活跃主站与浏览器自动化进程并未使用该目录,因此在不停主站的前提下完成整棵 scratch 子树删除。

当前建议:

  • 已在 T-114 中完成物理删除
  • 如果未来重新生成同类目录,仍应继续按“整棵 scratch 子树受控回收”处理,而不是按空目录逐个删

4. 当前执行建议

当前不建议直接删除以下对象:

  • var/backups/runtime-migration/20260407/t108/
  • var/db/postgres/ 内部空目录
  • var/crawler/browser_data/ 内部空目录
  • var/reports/final/chapters
  • var/reports/final/ir
  • var/logs/json_repair_failures

当前若还要继续做真实空间回收,优先顺序建议为:

  1. var/output/chrome-headless/ 未来重新生成,先复核活跃浏览器进程的实际 profile 路径,再决定是否再次受控清理
  2. 再决定是否为 t108 冷备份建立替代归档
  3. 只有在替代归档存在后,才评估删除 var/backups/runtime-migration/20260407/t108/

5. 结论

T-113 的核心结论是:

  • 当前扫描到的空目录大多不是“无用目录”,而是运行时结构的一部分。
  • T-114 已验证:真正适合优先回收的对象,是 var/output/ 下的 scratch 浏览器产物,而不是数据库卷或浏览器登录态目录。
  • 当前 var/output/ 已降到约 2.49 MB,仅保留 screens/ 截图产物与 .gitkeep
  • t108 冷备份当前仍应保留,直到回滚窗口和替代备份策略被明确。