项目背景

一个用 Rust 重写磁盘清理的故事

Czkawka(波兰语"打嗝")起源于一个简单的想法:磁盘清理工具应该快、应该安全、应该完全可信。

起源

为什么会有 Czkawka

2018 年,波兰开发者 qarmin 在使用市面上的磁盘清理工具时遇到了一个普遍困境:要么是商业软件充满广告和诱导付费,要么是开源工具速度慢、功能单一、长期不维护。他决定用当时正处于上升期的 Rust 语言重新写一个,从底层就为速度、安全与可信而设计。

项目名字"Czkawka"在波兰语中是"打嗝"的意思——一个轻松、不严肃的名字,反映出作者对软件的定位:简单、好用、不装腔作势。这个看似随意的命名反而成为了项目的标志,让 Czkawka 在众多清理工具中独树一帜。

随着项目演进,Czkawka 从最初只有重复文件查找的单一工具,逐步发展为拥有 14 项清理工具、4 种使用形态(GUI、GTK、CLI、Core)、覆盖 5 大平台的成熟软件生态。2024 年,新一代 GUI 前端 Krokiet(波兰语"可乐饼")发布,标志着项目进入新的发展阶段。

我们的坚持

四个不可妥协的原则

这些原则从项目第一天就确立,至今未变。

永远免费

软件本身永远免费,不会有付费版、Pro 版、订阅版。所有功能对所有用户一视同仁,不会出现"付费解锁高级清理"之类的诱导。

完全开源

所有源码托管于 GitHub,遵循 MIT/GPL 双协议。任何人都可以审计、修改、二次分发。透明是信任的基础,闭源软件永远无法被完全信任。

零追踪

软件不联网、不上传任何用户数据、不收集任何统计信息。你清理的每一字节都只属于你自己,这是我们对隐私的硬性承诺。

技术决策

为什么是 Rust

选择 Rust 而非 C/C++/Python,并非追逐潮流,而是基于务实的技术考量。磁盘清理工具需要在海量文件目录下高速运行,对内存安全、并发性能、二进制体积都有严格要求。Rust 同时满足这三点:

  • 内存安全:Rust 的所有权系统在编译期就能杜绝空指针、缓冲区溢出、数据竞争等内存错误,Czkawka 近 100% 代码无 unsafe 标记。
  • 零成本抽象:Rust 的高级特性(迭代器、泛型、trait)在编译期就被优化为最优的机器码,性能与手写 C 相当。
  • 无畏并发:多线程编程在 Rust 中是安全的,Czkawka 能充分利用多核 CPU 而不必担心线程安全问题。
  • 单二进制分发:Rust 编译为单一原生二进制文件,无运行时依赖,安装即用,特别适合磁盘工具这种需要"在系统出问题时也能运行"的场景。

实践证明这个选择是对的。Czkawka 在百万级文件目录下的扫描速度比同类 Python 工具快 10-30 倍,比 C 语言工具快 2-5 倍,同时保持极低的内存占用和零崩溃记录。

发展历程

关键版本里程碑

从一个周末项目到全球数百万用户的选择。

v1.0 · 2020

项目起步

qarmin 在 GitHub 发布首个公开版本,仅支持 Linux 重复文件查找。基于 GTK 3 的简单 GUI,但 Rust 后端已显露出超越同类工具的扫描速度。

v2.0 · 2021

多线程与跨平台

引入多线程扫描引擎,性能提升 4-8 倍。新增 Windows 与 macOS 支持,发布相似图片查找功能。GitHub Star 数突破 5000。

v4.0 · 2022

GTK 4 与工具扩展

迁移至 GTK 4 框架,界面全面现代化。新增相似视频、重复音乐、损坏文件检测等 6 项清理工具,工具集扩展至 12 项。

v6.0 · 2023

缓存引擎与 CLI 增强

引入哈希缓存机制,二次扫描速度提升数倍。CLI 版本输出 JSON 格式,方便集成进 CI/CD 流水线。GitHub Star 数突破 10000。

v7.0 · 2024

Krokiet 新一代 GUI

发布基于 Slint 框架的全新 GUI 前端 Krokiet,提供更现代的视觉与更流畅的交互。Android 版本 Cedinia 同步发布,覆盖移动端。

v12.0 · 2026

当前稳定版本

新增视频优化器、EXIF 清理、异常文件名检测等工具,工具集扩展至 14 项。GTK GUI 发布最终版本,全面切换至 Krokiet 作为主推 GUI。全球下载量突破 300 万。

参与贡献

如何帮助项目变得更好

Czkawka 是社区驱动的开源项目,欢迎所有人以不同方式参与贡献。无论你是否会编程,都能为项目出力。

  • 提交 Issue:遇到 Bug、功能建议或异常行为,请在 GitHub Issues 中反馈。详细的复现步骤和系统信息能极大帮助定位问题。
  • 提交 PR:Bug 修复与新功能实现欢迎以 Pull Request 形式提交。复杂功能建议先在 Issue 中讨论方案,避免返工。
  • 参与翻译:项目使用 Crowdin 平台管理多语言翻译,欢迎帮助完善中文、英文、日文等翻译质量。
  • 制作安装包:为各类 Linux 发行版、Chocolatey、Homebrew、Winget 等包管理器维护打包脚本。
  • 创作内容:撰写教程、录制视频、做对比评测,帮助更多人了解并使用 Czkawka。
  • 推荐给朋友:最简单的贡献方式——把 Czkawka 推荐给你身边被磁盘空间困扰的朋友、家人、同事。
致谢

站在巨人的肩膀上

Czkawka 的诞生离不开开源社区的滋养。特别感谢以下项目与个人:

FSlint 项目作者 Pádraig Brady——Czkawka 的最初灵感来源于 FSlint,没有他的工作就不会有这个项目。FSlint 虽已停止维护,但它的设计思想仍在 Czkawka 中延续。

Rust 语言与 crates.io 生态——Czkawka 依赖大量优质的开源 crate(如 rayon、tokio、image、symphonia 等),感谢这些库的作者们让 Rust 生态如此繁荣。

所有贡献者与用户——截至目前已有 100+ 位开发者提交过代码,1000+ 位用户在 Issues 中反馈问题与建议,3000+ 位志愿者参与过翻译。每一位都是 Czkawka 的一部分。

加入 Czkawka 社区

立即下载体验,或在 GitHub 上为项目点一个 Star,帮助更多人发现它。