磁盘清理终极指南:Czkawka 14 个工具一次讲透,重复文件、相似图片、视频瘦身一步到位
磁盘清理终极指南:Czkawka 14 个工具一次讲透,重复文件、相似图片、视频瘦身一步到位
【免费下载链接】czkawkaMulti functional app to find duplicates, empty folders, similar images etc.项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka
电脑用久了,总有一种"明明没装多少东西,硬盘却见了底"的错觉。真正去翻,往往不是文件太多,而是同样的文件存在了太多份——照片导了三次、视频压了两种格式、备份脚本跑了 N 遍还留着旧目录。手动清理?几百上千个重复项,一个个比对既不现实也伤眼睛。
Czkawka(波兰语"打嗝")就是为解决这类问题而生的开源磁盘清理工具:它用一个核心扫描引擎,打包了查找重复文件、空文件夹、相似图片、相似视频、损坏文件等 14 种实用能力,基于 Rust 编写、完全离线运行,既能用图形界面点一点,也能用命令行自动化执行。这篇文章从新手视角出发,带你把它真正用起来。
认识 Czkawka:不止一个"打嗝程序"
Czkawka 的名字源自波兰语"hiccup(打嗝)",而它新一代的图形界面叫 Krokiet(波兰语"炸丸子")。名字很俏皮,功能却相当严肃:所有工具共享同一个核心库czkawka_core,外面套了多套"皮肤":
- Krokiet:当前主推的 GUI 前端,基于 Slint 框架,Linux / Windows / macOS 三端体验一致,静态链接、下载即用;
- Czkawka GTK:老一代 GTK4 图形界面,12.0 是最后一个版本,官方已不再发布新二进制,建议新用户直接转向 Krokiet;
- czkawka_cli:命令行前端,适合写脚本、接 CI、定时任务;
- Cedinia:面向 Android 的触屏界面,同样基于 Slint;
- czkawka_core:可被其他项目复用的核心库,社区里已有 Tauri 前端、Python 绑定等衍生项目。
一句话总结架构:一套引擎,四个前端,全平台覆盖。无论你在桌面上还是手机上,都能用上同一套扫描算法。
5 分钟跑起来:三种安装姿势任选
姿势一:预编译二进制(推荐)
到项目发布页下载对应平台(Windows 10+ / macOS 10.15+ / Ubuntu 22.04+)的压缩包,解压即用。Krokiet 的预编译版本是静态链接的,没有任何强制运行时依赖,拷贝到任意目录都能启动。
姿势二:cargo 一键安装
装好 Rust 工具链后,一条命令即可拿到最新版 Krokiet:
cargo install krokiet --locked姿势三:源码编译(定制党首选)
git clone https://gitcode.com/GitHub_Trending/cz/czkawka cd czkawka cargo build --release --bin czkawka_cli想支持 HEIF / RAW / AVIF 等额外图片格式,编译时打开对应 feature 即可:
cargo build --release --bin krokiet --features "heif,libraw,libavif"小提醒:相似视频和视频优化两个工具运行时依赖 ffmpeg。Linux 用
sudo apt install ffmpeg,macOS 用brew install ffmpeg,Windows 用choco install ffmpeg后把可执行文件放进 PATH。
一图看懂 14 种工具:它们分别能干什么
| 工具 | 一句话说明 | 典型适用对象 |
|---|---|---|
| 重复文件 | 按名称、大小或哈希找出内容相同的文件 | 文档、安装包、下载目录 |
| 空文件夹 | 用算法找出没有任何文件/子目录的目录 | 卸载残留、迁移后的空壳目录 |
| 大文件 | 列出指定数量最大的文件 | 快速定位磁盘空间"大户" |
| 空文件 | 查找 0 字节或全空内容的文件 | 下载中断、生成失败的产物 |
| 临时文件 | 按内置规则匹配.tmp、thumbs.db、~等残留 | 系统缓存、编辑器临时文件 |
| 相似图片 | 感知哈希比对,识别不同分辨率/带水印的近似图 | 照片库去重 |
| 相似视频 | 逐帧采样对比画面,可识别剪辑/旋转/缩放的版本 | 视频库整理 |
| 相同音乐 | 按标签(歌手、标题等)或音频内容指纹匹配 | 音乐库整理 |
| 无效符号链接 | 找出指向不存在目标的软链接或循环链 | 迁移后的项目目录 |
| 损坏文件 | 用对应库尝试打开文件,找出打不开的坏档 | 下载库、存档库体检 |
| 错误扩展名 | 按文件头(魔数)识别真实类型,比对扩展名 | 改名改乱的文件 |
| EXIF 清理 | 批量移除图片的地理位置等元数据 | 隐私保护、投稿前脱敏 |
| 视频优化 | 转码低效编码 / 裁掉黑边,压缩体积 | 视频库瘦身 |
| 不规范命名 | 找出大写扩展名、emoji、首尾空格等命名问题 | 跨平台同步前检查 |
这 14 个工具基本覆盖了磁盘清理的绝大部分诉求。接下来挑三个最常用的实操看看。
实操:三步完成重复文件清理
图形界面(Krokiet)
- 左侧选择"重复文件"工具,点击"添加目录"把目标文件夹加进来;不需要扫描的子目录可以单独排除;
- 在设置里选定匹配方式——默认按哈希比对最可靠,也可以先用文件名/大小做快速预筛;
- 点击扫描,结果按"组"展示(同一组就是内容相同的文件),勾选要保留的版本,其余一键移入回收站。
这里特别提一个细节:扫描中途可以随时停止,已经算完的哈希会立刻写入缓存,下次再扫就能直接复用,相当于把大任务切成了可断续完成的小任务。
命令行(czkawka_cli)
命令行同样三步走,而且更适合脚本化。先干跑(dry-run)看结果,再真正执行:
# 第一步:预览要删哪些(AEN = 每组保留最新文件,其余都删) czkawka_cli dup -d /home/user/Downloads -D AEN -Q # 第二步:确认无误后执行,文件移入回收站而不是彻底删除 czkawka_cli dup -d /home/user/Downloads -D AEN -y关于删除策略,CLI 提供了丰富的组合,用一个表格说明:
| 代码 | 保留 | 删除 |
|---|---|---|
AEN/AEO | 每组最新 / 最旧的文件 | 其余全部 |
AEB/AES | 每组最大 / 最小的文件 | 其余全部 |
ON/OO | 仅保留最新 / 最旧 | 其他所有 |
OB/OS | 仅保留最大 / 最小 | 其他所有 |
HARD | 全部保留 | 用硬链接替代重复项 |
其中HARD很有意思:不删文件,而是把重复项替换成指向同一份数据的硬链接,立刻"省出"空间,同时保留所有路径都可用。
四大硬核亮点:为什么它跑得快又敢删
1. 内存安全的 Rust 引擎
核心代码几乎不含unsafe,从语言层面规避了缓冲区溢出等内存问题;多线程调度也由 Rust 的所有权模型兜底,扫描大目录时更让人放心。
2. 多线程 + 三级验证
重复文件查找不是直接对所有文件算哈希,而是先比名称、再比大小、最后才哈希确认——把开销最大的哈希计算留给"嫌疑最小"的文件。哈希算法可选 BLAKE3 / XXH3 / CRC32,兼顾速度与可靠性。
3. 缓存机制让二次扫描快得多
算过的哈希、图片指纹、视频签名都会落到共享缓存里,所有前端共用一份缓存。更进一步,Krokiet 默认启用"预哈希缓存":大文件只缓存首尾各 4KB 的部分哈希,重扫时只有新文件或改动过的文件才需要全量哈希。
4. 参考目录:把"绝对不能动"的文件锁起来
这是我觉得最贴心也最容易被低估的设计。扫描时可以把某个目录标记为参考目录:它的文件会参与比对,但任何自动删除、移动、改名操作都碰不到它。比如整理下载目录时把备份盘设成参考目录,就能安心地"删掉重复、留下备份原件"。
5. 彻底离线,无任何隐私负担
项目不联网、无遥测、无更新检查。依赖清单里没有任何网络/HTTP 相关的 crate,也就是说代码里根本没有"偷偷上传"的路径。
实战场景:三份真实需求的解法
场景一:给塞满的手机照片库瘦身
- 痛点:同一个场景拍了好几张,还有导出时被压缩、加过水印的版本,手动找重复能找一晚上。
- 方案:用"相似图片"工具扫描照片目录,相似度阈值(哈希距离 0~40)默认 5,先按默认扫一遍;想连缩略图与原图都识别出来,可以把阈值降到 0~3。
- 效果:一次扫描就能把"几乎相同"和"一眼相似"的照片分成组,勾选保留最清晰的那张,重复项批量进回收站,整理时间从"小时级"降到"分钟级"。
场景二:给 NAS / 备份目录去重,且绝不误伤原件
- 痛点:备份策略换了又换,同一份文件在多个目录各存了一份,但删哪个都不敢保证安全。
- 方案:把权威备份目录设成参考目录,其余目录正常扫描,执行
AEN删除策略并把结果送进回收站。 - 效果:参考目录里的文件物理上不可被任何自动操作触碰,去重的同时保留了完整的"原始底稿",出错还有回收站兜底。
场景三:视频库整体瘦身
- 痛点:老视频还在用低效编码,占用大;不少视频带黑边,白白浪费码率。
- 方案:先用
video-optimizer分别做"转码检查"和"黑边检查":
# 找出还没转成 h265/av1 的视频(干跑预览) czkawka_cli video-optimizer -d /media/videos transcode -c h265,av1 -f report.txt # 找出带黑边的视频 czkawka_cli video-optimizer -d /media/videos crop -m blackbars -f report.txt确认清单无误后加上-F真正执行,并开启--fail-if-not-smaller——转出来没变小就跳过,保证不会越优化越大。
- 效果:转码 + 裁黑边双管齐下,视频库通常能腾出可观的存储空间,代价只是压缩时多花一点 CPU 时间。
进阶技巧:把扫描性能再往上顶一档
编译期优化
对自己编译的用户,两个小改动就能提速:
# Cargo.toml 中加入 LTO:二进制更小,性能略有提升 [profile.release] lto = "thin"# 用本机 CPU 指令集编译,图像哈希可提速 10%~20% RUSTFLAGS="-C target-cpu=native" cargo build --release缓存与可移植配置
缓存文件放在共享目录(Linux 下是~/.cache/czkawka/),扫描超大集合后如果觉得缓存加载慢,可以删掉对应缓存文件让它按当前集合重建。想随身携带、做成 U 盘绿色版,用环境变量重定向配置与缓存路径即可:
CZKAWKA_CONFIG_PATH="./config" CZKAWKA_CACHE_PATH="./cache" ./krokiet用退出码把清理接进 CI
CLI 的退出码语义很适合自动化:0表示正常且没找到匹配项,11表示正常但发现了匹配项,1表示出错。比如 CI 里检查构建产物是否存在空文件:
czkawka_cli empty-files -d ./build_output -N -M # 找到空文件返回 11,没有则返回 0配合-W参数可以把"发现匹配"也视为成功,方便在需要"扫描但不以结果为失败"的流水线里使用。结果可以同时输出人读的文本和 JSON(-C紧凑 /-p格式化),交给jq或其他脚本继续处理。
常见问题速答
Q:Czkawka 和 Krokiet 到底是什么关系?同一个扫描引擎,不同界面。GTK 版 12.0 停更后,Krokiet 是官方推荐的 GUI,跨平台表现稳定;CLI 和核心库则一直保持同步更新。
Q:删错了重要文件怎么办?默认删除动作是把文件移入系统回收站而非永久删除,并且所有工具都支持先干跑预览(GUI 里是扫描结果预览,CLI 里是-Q)。再加上参考目录机制,关键路径基本不会被误伤。
Q:相似图片的"相似度"怎么调才准?关键参数有三个:哈希算法(默认 Gradient)、哈希尺寸(8/16/32/64,越大越精细)、最大哈希距离(0~40,越小越严格)。新手建议从默认值起步:先扫出明显重复,再按需求收紧或放宽。
Q:为什么相似视频没扫出结果?大概率是 ffmpeg 没装,或者扫描时长不够。video工具默认对每个视频采样开头 10 秒(跳过前 15 秒),如果两个视频只在后面片段相同,可以调大--scan-duration或多窗口参数再试。
写在最后
磁盘清理的本质不是"删",而是"看清哪些东西真的没用了"。Czkawka 的价值正在于此:14 种工具让"看清"这件事变得系统化——重复文件、空目录、相似图片、低效编码、损坏文件,每一类垃圾都有对应的探照灯;而参考目录、回收站、干跑预览这套安全设计,又让"敢删"有了底气。
适用人群其实很广:想给照片库腾空间的普通用户,管理多台设备同步的折腾党,需要给 NAS 和备份策略做体检的运维朋友,都能从中找到顺手的那把工具。随着 Krokiet 持续迭代、Cedinia 在 Android 端继续成长,这套"一套引擎、多端触达"的思路,也让它有潜力成为跨平台磁盘管理的统一入口——下一次它"打嗝"的时候,可能又在你的另一台设备上,帮你清出了一块新空间。
【免费下载链接】czkawkaMulti functional app to find duplicates, empty folders, similar images etc.项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
