Czkawka 实测:用 Rust 做重复文件检测,快在哪、能干什么、值不值得装
【免费下载链接】czkawkaMulti functional app to find duplicates, empty folders, similar images etc.项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka
Czkawka 是一个 Rust 写的磁盘清理工具箱,专门干一件事:找出硬盘里重复的文件、空目录、相似图片和视频,然后帮把它们清掉。它由一个核心库加三个入口组成——命令行、桌面 GUI(Krokiet)和 Android 应用(Cedinia),能跑在 Linux、Windows、macOS、FreeBSD 和 Android 上,内置 14 个检测工具,全程不联网、不收集任何数据。
能力速览
| 功能模块 | 解决什么问题 | 入口方式 |
|---|---|---|
| 重复文件检测 | 内容完全相同的文件占双份空间 | CLI / GUI |
| 相似图片 | 水印、分辨率不同的近似照片 | CLI / GUI |
| 相似视频 | 视觉相似或音频相同的视频 | CLI / GUI |
| 空文件夹 | 层层嵌套的空目录 | CLI / GUI |
| 临时文件 | 缓存、备份等垃圾小文件 | CLI / GUI |
| 大文件 | 找出占空间最多的前 N 个文件 | CLI / GUI |
14 个工具里,重复文件检测最该先试:它最常用,也是其他工具里算法最讲究的一个。
三步跑通:从安装到第一次扫描
第一步:拿到程序。官方提供预编译二进制,Windows、macOS 和 Ubuntu 直接下载解压就能用,不需要装任何依赖;想从源码装的话:
git clone https://gitcode.com/GitHub_Trending/cz/czkawka && cargo install --path czkawka_cli --locked第二步:跑第一次扫描。命令行的重复文件检测只需指定目录,-d后面可以跟多个路径:
czkawka_cli dup -d ~/Photos第三步:看结果。跑完会直接列出重复文件组,每组内是内容相同的文件,并标注每组能释放的空间;加-f result.txt可以把结果导出成文件,方便先过目再动手删。桌面版 Krokiet 的体验一样:选目录、点扫描、在列表里勾选要保留的版本。
它怎么扫的:三级过滤加缓存
重复文件检测是三级过滤
- 先按文件名分组,名字不同直接排除;
- 名字相同或可疑的,再比文件大小,大小不同直接排除;
- 大小也相同的,才逐字节计算内容哈希(默认 BLAKE3)。
这个顺序是关键:哈希计算是整套工具里最贵的操作,能省一个是一个。12.0 版还加了预哈希——先只读文件的头部、中部和尾部片段算一个便宜的指纹,指纹不同的文件直接跳过,相同才做完整哈希。对几 GB 的视频文件来说,这一步省下的时间非常可观。
相似图片靠感知哈希
思路是先缩小、再打指纹:图片被缩放到很小的尺寸、转成灰度,分区块统计特征,得到一个位指纹;然后数两个指纹之间差多少位(汉明距离),差异低于阈值就算相似。所以分辨率不同、带水印、甚至镜像翻转的图片都能被认出来——12.0 版刚加了几何不变性,镜像、翻转、旋转的图也能匹配。阈值在设置里可调,默认偏严格,宁可少报也不乱报。
缓存和线程是速度的第二来源
哈希结果会写到~/.cache/czkawka/,下次扫描时没改过的文件直接查缓存跳过,只有新文件或变过的文件才重新算。多线程方面,扫描默认吃满所有 CPU 核心(0 表示自动用满),线程池统一管理,默认每个工作线程 4 MB 栈,见czkawka_core/src/common/threads.rs。
三个真实使用场景
摄影师清理媒体库
照片目录里同一次拍摄的多张原图、不同分辨率的导出版本、加过水印的副本,堆起来就是几十 GB。
czkawka_cli dup -d ~/Photos -e ~/Photos/整理过 -f dup.txt结果按组展示,每组留一张;再加一遍相似图片检测,能捞回分辨率不完全一样的近似照片。一个几百 GB 的媒体库,按组去重后清出 10% 到 30% 的空间很常见,具体看拍摄习惯。
开发者:项目间的重复文件
同一个工具脚本、配置模板被复制到十几个项目里,各存一份,更新时容易漏。
czkawka_cli dup -d ~/work -x md,py,rs,json -f dup.txt-x限定扩展名,只对代码和文档做精确哈希匹配,内容完全相同的文件可以改挂硬链接,只占一份物理空间,各项目路径保持不变。几十个仓库的模板文件去重后,通常能省下几百 MB 起步的空间。
运维:服务器定期清理
服务器上的临时文件、空目录、垃圾小文件常年堆积,手动清不干净,也没法重复劳动。
czkawka_cli temp -d / -f /var/log/temp.txt czkawka_cli empty-folders -d / -f /var/log/ef.txt czkawka_cli big -d / -n 25 -f /var/log/big.txt三条命令导出三份报告,接进 crontab 每周跑一次,先列最大的 25 个文件再决定删什么。一台跑了多年的开发服务器,一次清理腾出 5% 到 20% 的空间并不夸张。
调优 & 配置:改哪两个最有用
配置文件在~/.config/krokiet/(CLI 用~/.config/czkawka/),最影响体感的两项:
use_cache = true # 默认开;二次扫描速度来源 thread_number = 0 # 0 表示自动用满所有核心 similar_images_sub_similarity = 85 # 相似图片默认阈值,调低报更多线程数默认 0(自动用满核心),在跑大目录扫描又怕卡系统时可以降到物理核心数,体感是扫描稍慢但系统照常流畅。缓存默认开启,二次扫描明显变快,一般不用动。大多数人不改这两个值也完全没问题。
跟同类工具比,选它的理由
| 对比项 | Czkawka | FSlint | DupeGuru |
|---|---|---|---|
| 语言 / 平台 | Rust;Linux、Windows、macOS、FreeBSD、Android | Python;Linux | Python + Qt;Linux、macOS、Windows |
| 工具覆盖面 | 14 种,含相似视频、音频匹配、损坏文件检查 | 偏系统级检查,无相似媒体 | 重复文件 + 相似图片/音频 |
| 缓存加速二次扫描 | 支持 | 不支持 | 支持 |
| 维护状态 | 活跃开发 | 已停更 | 基本停更 |
追求速度、跨平台统一体验,或者要相似视频、音频匹配这类工具,选 Czkawka;只想要一个找重复文件的图形界面,DupeGuru 也够用,只是功能面窄一些。
它怎么走到今天的 & 下一步
项目由 qarmin 受 FSlint 启发启动,核心引擎一直是 Rust,界面换了三轮:早期的 GTK 4 版 Czkawka,到 Slint 版 Krokiet,再到 Android 端的 Cedinia。2026 年 6 月的 12.0 版宣布 GTK 前端停止发新二进制,Krokiet 成为主力方向。按最近的更新记录,下一步集中在视频相似检测换用新引擎、相似图片的几何不变性识别,以及能验证图片解码能力的诊断面板。
Czkawka 是一套 Rust 写的磁盘清理工具箱,CLI、桌面 GUI 和 Android 应用共享同一个核心,14 个工具覆盖重复文件检测、相似图片视频、空目录、临时文件和损坏文件。建议先拿自己的照片目录跑一遍相似图片检测,看看能腾出多少空间。
【免费下载链接】czkawkaMulti functional app to find duplicates, empty folders, similar images etc.项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考