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_ts、pg_dynshmem、pg_notify、pg_replslot等 PostgreSQL 子目录 -
var/crawler/browser_data/*/Default/blob_storage/<uuid>等浏览器 profile 子目录 -
var/reports/final/chapters、var/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/chaptersvar/reports/final/irvar/logs/json_repair_failures
当前若还要继续做真实空间回收,优先顺序建议为:
- 若
var/output/chrome-headless/未来重新生成,先复核活跃浏览器进程的实际 profile 路径,再决定是否再次受控清理 - 再决定是否为
t108冷备份建立替代归档 - 只有在替代归档存在后,才评估删除
var/backups/runtime-migration/20260407/t108/
5. 结论
T-113 的核心结论是:
- 当前扫描到的空目录大多不是“无用目录”,而是运行时结构的一部分。
-
T-114已验证:真正适合优先回收的对象,是var/output/下的 scratch 浏览器产物,而不是数据库卷或浏览器登录态目录。 - 当前
var/output/已降到约2.49 MB,仅保留screens/截图产物与.gitkeep。 -
t108冷备份当前仍应保留,直到回滚窗口和替代备份策略被明确。