Czkawka/Krokiet:用 Rust 写重复文件、空文件夹与相似媒体检测的开源清理套件
2026/9/10 16:10:41 网站建设 项目流程

Czkawka/Krokiet:用 Rust 写重复文件、空文件夹与相似媒体检测的开源清理套件

【免费下载链接】czkawkaMulti functional app to find duplicates, empty folders, similar images etc.项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka

Czkawka(新 GUI 名为 Krokiet)是用 Rust 编写的免费开源磁盘清理套件,提供重复文件查找、空文件夹扫描、相似图片与视频比对等 14 个工具,带 CLI、跨平台 GUI 和 Android 端,适合需要腾出磁盘空间的开发者和普通用户。

它到底解决什么问题

先说一个常见场景:1TB 的照片目录,经过几次换设备、备份又恢复,同一张照片存在三个版本;Downloads 里躺着report_final_v2_real.pdf;电影目录里同一部片子有 1080p、720p 和一个剪辑版;再配上几百个 0 字节的临时文件和一堆空文件夹。

普通的磁盘清理工具管的是"系统垃圾",而上面这些"你自己复制出来的冗余",需要工具会比对文件内容、甚至理解"这两个视频其实是同一内容"。Czkawka 的定位就在这里:一个二进制带 14 个专用工具,Rust 编写、几乎无 unsafe 代码、不联网、不收任何遥测。

仓库是一个 Cargo workspace:核心扫描逻辑在 czkawka_core,四个前端都复用它——Krokiet(Slint 桌面 GUI,官方主推方向)、Czkawka GTK(旧版,12.0 是最后版本)、Cedinia(Android 触控端)、czkawka_cli(脚本和自动化用)。14 个工具覆盖:重复文件、空文件夹、最大文件、空文件、临时文件、相似图片、相似视频、相同音乐、失效符号链接、损坏文件、错误扩展名、EXIF 清除、视频优化器、不良文件名。

快速上手

预编译二进制覆盖 Windows 10+、Ubuntu 22.04+、macOS 10.15+,无运行时依赖;想自己编译的话:

git clone https://gitcode.com/GitHub_Trending/cz/czkawka cd czkawka cargo run --release --bin czkawka_cli

最小可用命令,在照片目录里找重复图片:

czkawka_cli dup -d ~/Photos -x IMAGE -f duplicates.txt

首次运行效果:控制台按分组列出文件,并给出重复文件总数和浪费空间(wasted space)统计;-f把结果写入duplicates.txt,加-C result.json可导出紧凑 JSON 给脚本消费。-T 0(默认)用满所有 CPU 线程,-T 2可压低占用。需要图形界面的话,cargo install krokiet --locked装出来的 Krokiet 是单文件跨平台二进制,解压即用。

核心能力拆解

重复文件查找:先分桶再哈希

核心思路是别让每个文件都吃一次全量哈希。按大小先分桶,只有出现两个及以上同尺寸的文件才进入下一轮;再按"大小+文件名"细分;最后才对幸存组做全文件哈希,默认 BLAKE3,-t可选 CRC32(更快更不可靠)或 XXH3(快但非密码学安全)。三段分别对应 duplicate/core.rs 里的check_files_sizecheck_files_size_namecheck_files_hash。这个"先便宜后昂贵"的漏斗设计挺聪明,大目录里绝大部分文件在第一关就被筛掉了。

第二次扫描靠缓存加速:算过的哈希写入系统缓存目录,未变化的文件直接复用(缓存在 common/cache.rs 实现,-H可强制关闭)。适合定期盘查、备份前去重这类"同一个目录反复扫"的场景。

相似图片检测:感知哈希加几何不变形

"相似"不等于"相等"。该工具把图片缩放后计算感知哈希指纹,再比对差异值(-s范围 0-40,默认 5,越小越严格);-g可选 6 种算法(Gradient 默认,Mean 更快,Median 对颜色变化更鲁棒),-c选哈希尺寸 8/16/32/64,越大越精细但越慢,官方建议日常用 8 或 16。--geometric-invariance mirror-flip-rotate90还能匹配被旋转、镜像过的图。实现在 similar_images/core.rs。适合照片库里找不同分辨率、带水印、重新压缩过的版本。

相似视频与音乐:时间窗签名加音频指纹

视频工具把 ffmpeg 作为运行时依赖:按固定间隔抽帧构建"时间窗签名",先用时长差异做预分组(--duration-tolerance-pct)减少两两比较,还能识别"长视频里的短片剪辑"(sub-clip 匹配)。音乐支持两条路线:TAGS 按元数据比(歌名、艺术家、时长等),CONTENT 按音频指纹比内容,后者见 same_music/core.rs。适合演唱会录像、录屏、翻录和二次剪辑这类"文件名完全不同但内容相同"的情况。

从扫描到删除的一条命令链

所有工具共享同一套操作开关:-D指定重复组保留策略(AEO 只留最旧、AEN 只留最新、AEB 只留最大、HARD 对其余文件建硬链接省空间),-Qdry-run 预览,-y移到回收站而非物理删除。自动化场景的推荐姿势永远是:先-Q看一遍将要发生什么,确认无误再放开删除开关。

实战示例

示例一:家庭媒体库去重(干跑 → 核对 → 执行)

  1. 干跑摸底:czkawka_cli dup -d ~/Media -x IMAGE,VIDEO -Q,看控制台统计的组数和浪费空间
  2. 核对-f media.txt生成的报告,确认每组"保留文件"是你想留的那份
  3. 正式删除、每组只留最旧版本:czkawka_cli dup -d ~/Media -x IMAGE,VIDEO -D aeo
  4. 内容相似但不完全相同的版本,再分别跑imagevideo子命令(video 需要装 ffmpeg)

量化结果:浪费空间统计直接给出可回收量;家庭媒体库重复率通常在 10%-30%(估算),1TB 媒体目录一般能腾出 100-300GB(估算)。

示例二:服务器每周自动巡检

# 每周日 02:00 扫描 /data 并导出 JSON 报告 0 2 * * 0 /usr/local/bin/czkawka_cli dup -d /data -C /var/log/dup_$(date +\%F).json -W 0 2 * * 0 /usr/local/bin/czkawka_cli empty-folders -d /data -f /var/log/empty_$(date +\%F).txt -W

-W让"发现了问题"不以错误码退出,避免监控误报。量化结果:报告里每个文件的路径和大小都在,加总即清理收益;确认模式后只需给命令补上删除参数,之后每周零人工。

和同类工具怎么选

功能矩阵取自 README 官方对比表:

维度Krokiet/CzkawkaFSlintDupeGuruBleachBit
实现语言RustPython(C 框架)Python/Obj-CPython
平台Linux/Win/macOS/FreeBSD/AndroidLinuxLinux/Win/macOSLinux/Win/macOS
重复文件
空文件夹/空文件
相似图片✔ 感知哈希
相似视频/音乐仅音乐
临时文件

上手成本上,Czkawka 预编译二进制解压即用,FSlint、DupeGuru 要装 Python 环境。速度方面仓库没有公开基准数据,"Rust 多线程很快"只是定性结论,别拿网上的数字当依据。建议:想要一个二进制覆盖"清理+去重"两类需求就选 Czkawka;只想清系统垃圾,BleachBit 更直接;FSlint 独有包冗余、非压缩二进制等工具,按需补充。

容易踩的坑

  1. ⚠️videovideo-optimizerbroken的视频检查都需要运行时装有 ffmpeg;Windows 预编译版不带 heif/libraw 功能,HEIC/RAW 图片扫不到。
  2. dup默认最小文件大小是 8192 字节(-m可调),更小的文件直接跳过,想全量扫要显式-m 1
  3. -D HARD硬链接去重只在同一文件系统内生效,且原文件一旦误删不好恢复;任何删除操作先-Q干跑,拿不准就用-y走回收站。
  4. GTK 版 Czkawka 的 12.0 是最后发布版本,不再提供新二进制,新用户直接上 Krokiet。

适合谁用

需要把磁盘清理写进脚本、CI 或 crontab 的人(CLI + JSON 输出 + dry-run 是完整组合),以及被媒体文件冗余折磨的人(相似图片/视频检测是它相对同类工具的核心差异点),选 Czkawka 基本没有替代品。如果目标机器装不了 ffmpeg,它的视频类工具会整体失效,这时候只值一半价。已经用惯其他 GUI 清理工具、只是偶尔清垃圾的用户,BleachBit 这类轻量工具就够了,不必为此迁移。

【免费下载链接】czkawkaMulti functional app to find duplicates, empty folders, similar images etc.项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询