Py学习  »  Git

仅仅5MB,CEO 写的磁盘清理工具在 Github 上火了。

开源日记 • 2 周前 • 198 次点击  


大家好,我是熊叔,今天继续来逛一下GitHub。

这次翻到的项目,作者有点特别。

一个身家几十亿美金的科技公司的CEO,周末没休息,自己写了个磁盘清理工具。

这事听着像段子,但是真的。

他叫 Tobi Lütke,Shopify 的创始人,二十多年前也是 Ruby on Rails 最早的一批核心开发者。

图片

最近他迷上了 DHH 打造的开源 Linux 系统 Omarchy。

图片

于是随手写了一个磁盘清理工具叫disktree,现在已经1159个star了。

图片

我用下来,它最值得说的就三点:磁盘占用看得清,删除流程做得稳,危险操作管得严。

我给你演示一把,你就知道它有多省事了

我拿自己 WIndows 的C盘试试,打开 disktree 后,它会直接扫描目录,再把所有文件铺成一整块彩色树图,谁占得多谁就更大。

图片

斜线阴影表示缓存、构建产物这类可回收内容,不需要自己一个个地去目录里找。

图片

找到要删除的内容后按下空格键进行标记,再按下 c 键之后打开审查列表,确认之后再执行删除操作。

图片
图片

删除后它会自动重新扫描,下面直接显示出本次释放的空间大小。

图片

整个过程就是点目录、按空格、看确认列表,没有打开终端,也不需要自己敲删除命令。

整个树状图还可以用鼠标一层层地点击进去。

图片

右上角可以调节显示大小、文件数量和目录层级。

图片

有人要好奇了,怎么做到的

01 磁盘使用率要先弄清楚。*

disktree 用树状图来表示磁盘,每个目录所占的空间大小不同,大的占的地方多一些,颜色也不同,代码、缓存、Git仓库、媒体文件等。

选择一个目录后,右边会直接显示出该目录所占的比例、文件的数量以及最后修改的时间。

disktree 树图与右侧信息面板

还可以识别出裸Git仓库、target构建目录、缓存以及同步历史,并将需要重点关注的大目录放入到Worth a look中。

Worth a look 位于右侧面板

这些分析都在本地完成,不需要上传目录信息。

02 找到了,也不会马上删。

选中文件后先按空格进行标记,然后按下c键打开审查列表,确认之后才会真正执行删除操作,删除完毕之后会自动重新扫描,并显示出释放的空间。

审查列表还能保存下来,或者复制成 prompt 交给 AI 再检查一遍。

我喜欢这样的流程,因为清磁盘最怕的就是多点一下,而不是删错了。

03 最后还有一层安全护栏。

系统目录、挂载点和家目录本身不能删除,symlink 只处理链接,不会继续向里面删除,文件操作也不会经过 shell。

Git 仓库只读取状态,不运行里面的程序,这些规则还有自动化测试覆盖。

所以它和普通磁盘分析工具最大的区别,就是把“找到问题”和“安全清掉”接在了一起。

HN 上有人发这个项目时,标题就两个词:

Find it. Delete it.

基本就是它的全部逻辑。

想试的话,装起来很简单

Linux、macOS 和 Windows 都有现成版本,可以直接从 GitHub Releases 下载。

图片

Linux 解压后运行:

BASH
./install.sh

直接安装到用户的目录中,不需要root权限。

macOS 把 disktree.app 拖进 Applications,Windows 解压后直接运行。

正常启动:

BASH
disktree

默认扫描家目录,想看整个磁盘就加:

BASH
--disk

文件管理器里右键某个目录,也能直接用 disktree 打开。

自己编译的话,需要 Rust 1.97 以上版本,在 Linux 上还需要有可以正常运行 GPU 和 Vulkan 的显卡环境。

到这里边界也给大家提提

我用下来,有几个地方得提前知道。

它需要用到 GPU 来运行 Vulkan,虚拟机没有正常图形加速时,界面可能直接起不来。

删除前有好几层确认,但真正执行永久删除时依然很直接,所以审查列表一定要看清楚。

Age 模式是根据文件最后修改的时间来判断的,并不能说明文件是否被使用过,因此用它来判断长期不用的话只能作为参考。

项目出来不久,中文教程和生态都不多,遇到问题基本上还是要自己去翻 README 和 Issue。

所以目前我更愿意把它当作一个新的工具来使用,如果真的要把它放到主力机上,我会再观察一段时间。

写在最后

我比较喜欢 disktree 的地方,就是它没有把重点只放在找大文件上。

把扫描、标记、审核、删除的过程整合成一个流程,使用起来会更省心。

现在它还很新,也有一些限制。

如果硬盘常常被缓存、构建目录和历史文件占满的话,可以试一试。

开源地址:https://github.com/tobi/disktree

平时我会持续分享一些有趣的开源项目,有兴趣的朋友可以关注一下。

回复关键词,可以找到你想要的项目。

图片

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/201570