跳到主要内容

安全与恢复

Cleanr 的目标是让清理可审阅、可恢复,但“移动到回收站”并不等于永久备份。 这一页说明它的安全边界。

移入回收站通常仍会占用文件对应的磁盘空间。候选大小和已移动字节数描述文件, 不是实测的可用空间增量。清空回收站是用户的另一个决定;清空后 Cleanr 无法再恢复 这些内容。文件系统压缩、共享块和快照也可能使文件大小与物理占用不同。

清理时会发生什么

对于每一个已选条目,Cleanr 会:

  1. 先为已选条目创建 pending 执行清单;
  2. 确认路径位于扫描根目录内;
  3. 拒绝文件系统根目录、符号链接和受保护的 Cleanr 路径;
  4. 在适用时检查条目类型、修改时间、文件大小和目录指纹是否仍与扫描时一致;
  5. 将条目移动到操作系统回收站;
  6. 把结果和恢复定位信息写回执行清单。

每个条目都会在移动前立即校验。目标在扫描后发生变化时,该条目会安全失败并 保留在原处。

受保护路径

Cleanr 会排除:

  • 作为整体清理目标的主目录;
  • 当前 Cleanr 可执行文件和配置文件;
  • Cleanr 状态目录,包括清理与恢复历史;
  • 已配置的插件和语言目录。

主目录下的内容仍然可以扫描。这里的保护是为了避免把主目录本身或其他受保护 子树当成一个清理条目。

自动选择规则

普通 TUI 审阅、cleanr plancleanr dry-run 会先只保留其他方面仍符合条件、且 候选目录树中最新观测修改时间至少达到当前门槛的条目。长期设置是 [recommendations].preselect_after_days,默认 90 天;--inactive-days <天数> 只 覆盖本次运行。设为 0 会移除年龄过滤,显示其他方面仍符合条件的全部候选项。

只有同时满足以下条件时,条目才可能被预选:

  • 规则置信度为 High
  • 规则声明 default_selected = true
  • 规则来自 Cleanr 内置包或显式信任的插件;
  • 观测到的修改时间年龄满足当前门槛;
  • 扫描证据完整,且时间不在未来。
  • 每个已声明归属进程保护都确认处于空闲状态。

执行前仍然可以取消任何选择。下载文件、日志、宽泛的临时文件匹配、中等置信度条目和 未信任插件的匹配都需要手动选择。当前 Windows 用户 Temp 目录中的普通文件使用一条 窄规则作为例外:文件必须至少 30 天未修改,并且仍需通过当前门槛。显式 --select 可以把其他方面仍可选择、但修改时间较新或缺失的需审阅候选项加入计划。 cleanr analyze 和 TUI /usage 会保留完整证据;/usage 的候选和已选摘要指标仍 使用当前门槛。

修改时间只是观测到的文件系统元数据,并不能证明最后访问时间。对于目录,Cleanr 使用 候选项自身及其已扫描后代中最新的观测修改时间。

清单与历史

Cleanr 会保存:

  • 每次清理的执行清单;
  • 每次恢复尝试的恢复清单;
  • 每个条目的成功、失败和回滚信息。

这些文件位于平台状态目录下的 cleanr 文件夹中。Cleanr 的恢复历史依赖它们, 如果之后可能需要撤销清理,请不要删除该目录。

恢复支持

目前支持程序化恢复:

  • macOS 废纸篓;
  • Windows 回收站;
  • 兼容 Freedesktop 回收站规范的 Linux 桌面。

恢复是尽力而为。系统回收站清空后无法找回条目;原路径重新出现时也不会覆盖。 外部工具修改回收站元数据后,Cleanr 也可能无法定位原条目。

如果恢复失败,请先检查系统回收站和对应清单,再决定下一步。

确认与外部本地自动化

cleanr analyze 是只读操作:它扫描并输出证据,但不会创建清理计划或移动文件。 Agent 的建议或预选条目都不等于清理权限。

只有当前用户审阅并明确授权某个确切计划后,本地 Agent 才能执行清理。受限命令为:

cleanr clean \
--plan cleanr-plan.json \
--plan-sha256 <reviewed-sha256> \
--authorized-by-user

cleanr plan --output 会打印计划摘要。可重复使用的 --select--deselect 可以记录当前用户在证据审阅中对确切候选路径作出的选择,但不能加入未知、被重叠处理 抑制或被安全策略排除的路径。执行前,clean 会校验该摘要、重新扫描记录的根目录、 按该确切选择重新生成计划,并把已选执行投影与已授权文件比较。范围、规则、推荐策略、 选择、安全策略或已选目标文件系统证据的变化都会中止清理,并要求重新审阅和授权; 已选目标之外的候选项变化不会使计划失效。已声明进程保护会在写清单前统一检查,且在 每个受保护条目执行前立即复核;运行中或未知状态都会安全阻断。成功条目仍然只进入系统 回收站,同时写入含恢复定位信息的执行清单。清单还会记录授权来自本地 TUI 确认还是 用户的显式委托。

--authorized-by-user 是调用方提供的授权声明,不是独立验证的人类批准凭证。摘要 用于校验计划内容,不会认证授权者身份。这些保护适用于通过 Cleanr 执行的操作,不能 把拥有其他文件操作工具的 Agent 隔离在沙箱中。Agent 仍必须取得并遵守用户真实授权。

设置 cleanup.require_confirm = false 只会取消本地 /clean 的交互确认框, 不会把 analyze 变成执行接口,也不会取消委托命令对摘要和授权的要求。

预算受限扫描绝不授予清理权限。其来源信息会保留在分析证据中;计划生成和执行层都会 安全拒绝,并且拒绝发生在任何回收站或清单操作之前。

实用安全清单

  • 从范围较小的项目目录开始。
  • 对不熟悉的候选项阅读风险说明。
  • 用版本控制或备份保护源码和不可替代的数据。
  • 确认清理正确前,不要清空系统回收站。
  • 仍需恢复历史时,保留 Cleanr 状态目录。

版本与各平台实际验证范围见发布准备