BleachBit 6.0.6 是系统清理工具,Windows 便携包 20402357 字节,解开 51151630 字节,启动器 bleachbit.exe 只有 108144 字节。

它要解决的是:临时文件、缓存、日志这些东西每天都在长,谁都不敢手动删,删错了系统起不来。

这次跑的是预览模式,一个文件都没删,只让它算了一遍能清多少东西,顺手量了界面首帧和扫描耗时。

108144 字节的启动器

压缩包 20402357 字节,解开 51151630 字节。两个 exe 都是 108144 字节,真正干活的是同目录下的 Python 运行时和 GTK 库。

文件字节说明
bleachbit.exe108144图形界面入口
bleachbit_console.exe108144控制台入口,同一个程序两种外壳
gdbus.exe48240GTK 的 D-Bus 辅助进程
解压后目录51151630压缩包 20402357,压缩比 2.5

两个入口共用一个内核

图形版和控制台版都是 108144 字节,它们只是加载器,判断有没有窗口环境再决定怎么跑。清理逻辑在 Python 模块里,两边完全一致。

目录比 exe 大 470 倍

51151630 字节里 99.8% 不是那个 108144 字节的 exe,而是 Python 解释器与 GTK 依赖。这也解释了首帧为什么要 1.2 秒。

289 个清理项

控制台版 --list-cleaners 输出的清单有 289 行,每行格式是「程序名.项目名」,从 Adobe Reader 一路排到各种浏览器。

项值
清理项总数289 行
system 分类下的选项11 个
清单格式cleaner.option,如 system.tmp

system 这一组有 11 个开关

分别是 clipboard、custom、dns_cache、empty_space、logs、memory_dump、muicache、prefetch、recycle_bin、tmp、updates。选哪几个决定了清理范围。

清单里的名字必须原样传

289 行里的每一项都是「程序名.选项名」的组合,--preview 后面跟的就是这个字符串。写错一个字母就会报未知选项。

预览一遍 16.4 秒

对 system.tmp 跑预览,16.40 秒扫出 61928 个文件、算下来能释放 10.4 GB。整个过程只列清单,不删任何东西。

指标值
耗时16.40 秒
输出行数61930 行
涉及文件61928 个
预计可释放10.4 GB
BleachBit 6.0.6 中文界面:顶部预览、清理、终止三个按钮,左侧树按程序分组列出 Android Studio 与 Chromium 的缓存、Cookie、崩溃报告、历史记录等项目,每项前有勾选框

10.4 GB 全在临时目录里

这 61928 个文件全部来自用户 Temp 与 Windows Temp,单个都不大,最前面几个只有 53 字节、2.1kB、16.7kB。加起来 10.4 GB 说明数量堆出来的体积。

预览的代价是逐条列文件

16.40 秒里大部分时间花在生成 61930 行输出上。只想看总数时这个开销可以接受,要在脚本里频繁调就不合适。

界面 1254 毫秒出来

从启动到窗口可见 1254 毫秒。窗口分左右两块:左边是可清理项的树,右边是说明与结果区。

区域内容
顶部预览、清理、终止三个按钮
左侧树按程序分组,如 Android Studio、Chromium
右侧当前选项的说明文字与操作结果

分组按程序不按文件类型

树的第一层是软件名(Android Studio、Chromium 等),第二层才是具体项目(Gradle 缓存、IDE 缓存、日志)。要清某个软件的痕迹就展开那一个节点。

清理按钮要勾选后才生效

左侧每一项前面有勾选框,没勾的不会被处理。这是它把「预览」和「清理」分开的原因:先看清要删什么,再决定勾哪个。

几个真踩过的点

下面三条在这次测试里真实出现,附当时的处理方式。

现象原因处理
传 system.cache 报 Unknown option 'cache'这个版本里 system 下没有 cache 这一项先用 --list-cleaners 确认选项名,再传给 --preview
控制台输出全是乱码输出用 GBK 编码,管道按 UTF-8 解码读的时候指定 gbk,中文字才正常
61930 行输出淹了终端预览逐条列出每个文件重定向到文件后只看最后几行

选项名和直觉不一致

想清浏览器缓存时写 system.cache 会直接报错,因为缓存不归 system 管,它在每个浏览器自己的分组下。289 个名字只能靠清单确认,猜不出来。

如果传的选项名不在那 289 行清单里,程序会抛 RuntimeError 并直接退出,此时必须先跑一次 --list-cleaners 确认拼写。选项名改了却沿用旧脚本时,这条报错是唯一的提示。

输出编码是 GBK

把输出接进管道时如果按 UTF-8 解码,「删除」「预计释放磁盘空间」这些字会变成一串问号。脚本里要显式用 gbk 解码,否则连统计行都解析不出来。

什么场景值得上

系统盘告急、又不想逐个文件夹翻临时文件时,它先把能清的列成一张带体积的清单。

场景合适度说明
清理临时文件与缓存高61928 个文件 10.4 GB,一条命令列清
批量清浏览器痕迹高每个浏览器单独一组,逐项可控
脚本里定时清理中输出 GBK 编码,解析要处理
只想看磁盘占用低预览 16.4 秒,用专门的磁盘分析工具更快

预览和清理是两个动作

预览只读不写,清理才动文件。这个顺序让「先看再删」成为默认流程,也是它敢让普通用户点的原因。

授权与费用

GPL-3.0,个人和商业环境都不收费。源码在 GitHub 上,主要语言 Python,release 覆盖 Windows 与 Linux,Windows 版是便携目录。