Czkawka基于 Rust 的跨平台磁盘清理工具三级哈希比对让重复文件扫描只需对候选文件读全文【免费下载链接】czkawkaMulti functional app to find duplicates, empty folders, similar images etc.项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka磁盘清理场景重复文件、相似媒体与临时文件堆积Czkawka波兰语打嗝是一个用 Rust 编写的磁盘清理工具跨平台支持 Linux、Windows、macOS 和 Android。它针对的困境很具体4K 原片拷进 NAS 后发现同一部电影在三个文件夹里各躺着一份码率还不一样相似照片散落在多个编辑目录里系统常年积累临时文件和空文件夹。逐个人工比对文件不现实磁盘清理工具的价值在于先把它们找出来再交给用户决策。项目概览一个核心库四个前端Czkawka 的核心是纯 Rust 库czkawka_core全部清理逻辑在其中实现四个前端只是不同外壳。这个取舍让桌面、命令行、移动端的扫描行为保持一致。旧的 GTK 4 前端Czkawka GUI在 12.0 后停止更新官方已将重心移到基于 Slint 的 Krokiet。入口技术栈平台适用场景KrokietSlint GUILinux / Windows / macOS主桌面前端功能最全官方推荐Czkawka CLIRust 命令行Linux / Windows / macOS脚本化与自动化结果可导出文件CediniaSlint GUIAndroid移动端触控前端无视频工具缺 ffmpegCzkawka GUIGTK 4Linux / Windows / macOS旧版前端12.0 为最后版本许可方面核心库与 CLI 为 MITKrokiet 和 Cedinia 因 Slint 的许可要求为 GPL-3.0。核心能力14 个清理工具按场景分组去重与磁盘整理重复文件按文件名、大小或哈希比对找出内容相同的文件并分组支持按扩展名与最小大小过滤。空文件 / 空文件夹找出 0 字节文件和真正空的目录空文件夹用专门算法逐层判断避免误伤含隐藏文件的目录。临时文件按模式识别各应用产生的临时文件与缓存支持排除规则如*/.git。大文件列出指定位置体积最大的 N 个文件按大小排序用于定位空间大头。Bad Names找出文件名含特殊字符等命名问题的文件。媒体内容识别与优化相似图片识别不完全相同的图——不同分辨率、带水印、裁剪过的版本都能归入同组。相似视频通过视频指纹找视觉内容相似的视频可识别不同编码或分辨率的同一部影片运行时依赖 ffmpeg。相同音乐既可按标签艺术家、专辑、标题比对也可读取音频内容做内容级比对。视频优化器裁剪静态黑边并转码为更高效的编码格式减少单个视频体积。Exif 清理从图片和多种文件类型中移除拍摄位置、时间等元数据。系统健康与文件完整性检查无效符号链接列出指向不存在目标的路径链接。损坏文件解码验证图片、视频、音频是否可正常打开而非只检查文件头。错误扩展名检测文件实际内容与扩展名不符的情况例如改后缀伪装的二进制文件。其中相似图片工具值得单独说明。按字节比对的重复工具遇到同一场景的两张不同分辨率截图会直接漏过而相似图片工具基于感知哈希图像指纹先提取图像的低层视觉特征再计算特征之间的汉明距离距离低于阈值即判定为相似。因此分辨率变化、水印叠加、轻微裁剪都能被归组用户可按相似度阈值调节分组松紧度再逐组人工确认。源码位于czkawka_core/src/tools/similar_images/。从安装到首次清理Krokiet 与 CLI 的安装和扫描流程预编译二进制无强制运行时依赖LinuxUbuntu 22.04/24.04、macOS、Windows 10/11 均可直接使用Linux下载 Krokiet 预编译版即可运行使用相似视频功能时执行sudo apt install ffmpeg。macOS下载预编译版源码编译前可执行brew install ffmpeg libraw libheif libavif dav1d启用可选格式支持。Windows下载预编译版相似视频需将ffmpeg.exe放入 PATH。源码编译只需两步git clone https://gitcode.com/GitHub_Trending/cz/czkawka cargo install krokiet --locked首次清理三步启动 Krokiet在 Included Paths 里加入要扫描的目录同时把不希望触碰的目录排除掉。选择工具如重复文件执行扫描完成后结果按组展示。确认每组保留一份对其余副本批量执行删除、移动或建硬链接CLI 用户则在命令里加-f results.txt把结果写入文件。性能与技术取舍三级哈希比对与扫描缓存快主要来自两处设计。第一重复文件比对是分级的。第一步只按文件大小分组大小唯一的文件在此被排除不产生任何 I/O第二步对同大小文件只读取文件头尾各 4KB 做预哈希源码中PREHASHING_BUFFER_SIZE为 4KB不同即排除第三步才对预哈希相同的候选文件计算完整哈希。白话翻译一个目录里绝大多数文件在看大小这一步就被筛掉了真正读全文的只有少数候选。第二结果带缓存。官方 README 对缓存的描述Cache support - second and further scans should be much faster than the first one.缓存条目按文件大小加修改时间索引。加载缓存时的校验逻辑如下czkawka_core/src/common/cache.rsif let Some((size, modification_date)) used_files.get(key) { if file_entry.get_size() ! *size { return false; } if file_entry.get_modified_date() ! *modification_date { return false; } }意思是上次扫描记录过的文件只要大小和修改时间都没变本次直接跳过比对。第二次扫同一目录时未变更文件在加载缓存阶段就被排除只有新增和被修改的文件重新走完整流程。Rust 本身保证了多线程比对无数据竞争、内存安全官方 README 将Amazingly fast - due multithreading and efficient algorithms列为核心特性。实战工作流重复文件扫描、相似图片整理与垃圾清理流程一用 CLI 扫描媒体目录的重复文件场景本地视频库里混有重复下载和转码后的同影片。执行哈希模式的重复扫描排除备份目录结果写入文件czkawka_cli dup -d ~/Videos -e ~/Videos/backup -s hash -f duplicates.txt打开duplicates.txt按组查看重复文件列表。确认后删除或移动冗余副本保留原片。预期效果无需 GUI重复分组以文本形式落盘可直接纳入清理流程或脚本判断。流程二整理相似照片场景照片库里有同一场景的多张不同版本和分辨率截图。启动 Krokiet选中照片目录并排除需要跳过的文件夹。使用相似图片工具先以较严格的相似度执行观察分组数量后再按需调低阈值。逐组查看缩略图保留最佳版本其余执行删除或硬链接。预期效果字节级重复工具漏掉的近似照片分辨率变化、水印、裁剪被归入同组由用户逐组裁决。流程三清理空文件夹与临时文件场景长期积累的构建产物、缓存和空目录占用目录结构。czkawka_cli empty-folders -d ~/Documents -f empty.txt czkawka_cli temp -d ~/ -E */.git* -f temp.txt预期效果得到空文件夹与临时文件两个清单按清单逐项确认后清理-E参数保证版本库等目录不被误伤。同类工具对比Czkawka vs DupeGuru、FSlint、BleachBit维度CzkawkaKrokiet/CLIDupeGuruFSlintBleachBit扫描速度Rust 多线程大小→预哈希→全量哈希三级比对Python 实现速度受目录规模影响Python 实现Python 实现平台覆盖Linux / Windows / macOS / AndroidLinux / Windows / macOSLinuxLinux / Windows / macOS功能广度重复、相似图片/视频/音乐、大文件、临时、损坏文件、扩展名、Exif 等 14 项重复、相似图片、按标签的音乐比对选项丰富文件系统完整性检查bad ID、未 strip 二进制、名称冲突等临时文件与缓存清理是否离线是设计上无网络访问、不收集统计是是是开源协议核心 MITKrokiet GUI GPL-3.0AGPL-3.0GPL-3.0GPL-3.0DupeGuru 的可定制选项很多相似图片与音乐标签比对同样成熟FSlint 有若干 Czkawka 未覆盖的文件系统检查项BleachBit 在临时文件清理上积累更深。Czkawka 的差异点在于媒体覆盖最全图片、视频、音乐三线都有内容级比对且桌面、CLI、Android 共用同一核心行为一致。进阶与自动化缓存、CLI 脚本与编译特性缓存管理。每个工具的缓存独立存放并带版本号随系统缓存目录管理Linux 下通常在~/.cache/czkawka/。文件大规模变更后无需手动清缓存大小或修改时间变化的条目会自动失效并重扫。CLI 自动化。参数用czkawka_cli --help和czkawka_cli dup --help自查-d指定扫描目录可多个、-e排除目录、-x按扩展名过滤、-f输出结果文件。配合 cron 或 CI 定时任务即可把每周扫一次下载目录变成无人值守流程。编译期特性开关。预编译版不含 RAW/HEIF 支持源码编译时按需启用cargo build --release --bin krokiet --features heif,libraw,libavif渲染后端也可用SLINT_BACKEND环境变量在 FemtoVG、software、Skia 之间切换。核心实现分散在 czkawka_core/src/tools/14 个清理工具每个含 core 与 traits和 czkawka_core/src/common/缓存、进度、多线程等共享基础设施。生态与展望活跃开发、贡献路径与复用生态项目处于活跃开发状态README 对比表中 Krokiet 与 Cedinia 均标注In active developmentGTK 版 12.0 为最后版本官方建议用户迁移到 Krokiet。官方给出的贡献方向包括bug 修复类 PR新功能建议先提 issue 沟通、经 Crowdin 更新的多语言翻译、以及 Homebrew、Winget、各发行版仓库的打包工作。czkawka_core以 crate 形式对外复用已有第三方基于它构建 Tauri 前端与 Python 绑定仓库内instructions/目录提供分模块的开发说明Changelog.md记录版本变更。建议每月对下载目录和媒体目录各做一次完整扫描缓存机制会让重复扫描的代价很低而这两类目录正是重复文件和临时文件的主要来源。【免费下载链接】czkawkaMulti functional app to find duplicates, empty folders, similar images etc.项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考