czkawka-强大易用的重复文件查找和删除工具

Czkawka (tch•kav•ka (IPA: [ˈʧ̑kafka]), “hiccup” in Polish) is a simple, fast and free app to remove unnecessary files from your computer.
Multi functional app to find duplicates, empty folders, similar images etc.

Czkawka

Features

  • 使用内存安全的Rust语言编写
  • 超快,得益于一些高级算法和多线程技术
  • 免费,开源,无广告
  • 多平台支持,Linux,Windows,macOS,FreeBSD,还会更多
  • 缓存支持,二次扫描比首次更快
  • 命令行接口,便于自动化
  • gui使用gtk4,界面与fslint很像
  • 没后门,不访问互联网,也不收集用户信息和统计信息
  • 多语言
  • 内置多种工具
    • 重复文件,基于文件名、大小或哈希
    • 空文件夹,查找指定目录中的空文件夹
    • 大文件,在指定位置查找大文件
    • 空文件
    • 临时文件
    • 相似图片
    • 相似视频
    • 相同音乐文件
    • 无效的符号链接
    • 损坏的文件
    • 不匹配的文件扩展名

支持的操作系统

  • Linux - Ubuntu 22.04+, Fedora 36+, Alpine Linux 3.16+, Debian 12+ and a lot of more
  • Windows - 7, 8.1, 10, 11
  • MacOS - 10.15+

如果需要gui使用gtk3的旧版本以支持更多操作系统,比如Ubuntu20.04,可以使用4.1.0或更早的版本。

安装

Windows用户可以使用scoop进行安装:

# 只安装命令行程序
scoop install czkawka

# 安装gui
scoop install czkawka-gui

其他操作系统上的安装方法请参考文档

如何使用

gui的使用非常简单,在页面指定搜索路径就可以,然后配置相应的工具和后续动作。

命令行的使用
❯ czkawka
czkawka 5.1.0

USAGE:
    czkawka.exe <COMMAND> [SCFLAGS] [SCOPTIONS]

OPTIONS:
  -h, --help     Print help
  -V, --version  Print version

SUBCOMMANDS:
  dup            Finds duplicate files
  empty-folders  Finds empty folders
  big            Finds big files
  empty-files    Finds empty files
  temp           Finds temporary files
  image          Finds similar images
  music          Finds same music by tags
  symlinks       Finds invalid symlinks
  broken         Finds broken files
  video          Finds similar video files
  ext            Finds files with invalid extensions
  tester         Small utility to test supported speed of
  help           Print this message or the help of the given subcommand(s)

    try "czkawka.exe <COMMAND> -h" to get more info about a specific tool

EXAMPLES:
    czkawka dup -d /home/rafal -e /home/rafal/Obrazy  -m 25 -x 7z rar IMAGE -s hash -f results.txt -D aeo
    czkawka empty-folders -d /home/rafal/rr /home/gateway -f results.txt
    czkawka big -d /home/rafal/ /home/piszczal -e /home/rafal/Roman -n 25 -x VIDEO -f results.txt
    czkawka empty-files -d /home/rafal /home/szczekacz -e /home/rafal/Pulpit -R -f results.txt
    czkawka temp -d /home/rafal/ -E */.git */tmp* *Pulpit -f results.txt -D
    czkawka image -d /home/rafal -e /home/rafal/Pulpit -f results.txt
    czkawka music -d /home/rafal -e /home/rafal/Pulpit -z "artist,year, ARTISTALBUM, ALBUM___tiTlE"  -f results.txt
    czkawka symlinks -d /home/kicikici/ /home/szczek -e /home/kicikici/jestempsem -x jpg -f results.txt
    czkawka broken -d /home/mikrut/ -e /home/mikrut/trakt -f results.txt
    czkawka extnp -d /home/mikrut/ -e /home/mikrut/trakt -f results.txt

❯ czkawka dup -h
Finds duplicate files

Usage: czkawka.exe dup [OPTIONS] --directories <DIRECTORIES>

Options:
  -d, --directories <DIRECTORIES>
          Directorie(s) to search
  -e, --excluded-directories <EXCLUDED_DIRECTORIES>
          Excluded directorie(s)
  -E, --excluded-items <EXCLUDED_ITEMS>
          Excluded item(s)
  -m, --minimal-file-size <MINIMAL_FILE_SIZE>
          Minimum size in bytes [default: 8192]
  -i, --maximal-file-size <MAXIMAL_FILE_SIZE>
          Maximum size in bytes [default: 18446744073709551615]
  -c, --minimal-cached-file-size <MINIMAL_CACHED_FILE_SIZE>
          Minimum cached file size in bytes [default: 257144]
  -x, --allowed-extensions <ALLOWED_EXTENSIONS>
          Allowed file extension(s)
  -s, --search-method <SEARCH_METHOD>
          Search method (NAME, SIZE, HASH) [default: HASH]
  -D, --delete-method <DELETE_METHOD>
          Delete method (AEN, AEO, ON, OO, HARD) [default: NONE]
  -t, --hash-type <HASH_TYPE>
          Hash type (BLAKE3, CRC32, XXH3) [default: BLAKE3]
  -f, --file-to-save <file-name>
          Saves the results into the file
  -R, --not-recursive
          Prevents from recursive check of folders
  -l, --case-sensitive-name-comparison
          Use case sensitive name comparison
  -L, --allow-hard-links
          Do not ignore hard links
      --dryrun
          Do nothing and print the operation that would happen.
  -h, --help
          Print help (see more with '--help')

EXAMPLE:
    czkawka dup -d /home/rafal -e /home/rafal/Obrazy  -m 25 -x 7z rar IMAGE -s hash -f results.txt -D aeo

来个实例:

# 创建并进入测试目录
❯ mkdir test && cd test

    Directory: C:\Users\yp.wang

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----           2023/3/22    12:02                test

# 创建两个内容为"中文"的txt文件echo 中文 > test1.txt
❯ echo 中文 > test2.txt

# 查找重复文件
❯ czkawka dup -d C:\Users\yp.wang\test\ -m 0
error: invalid value '0' for '--minimal-file-size <MINIMAL_FILE_SIZE>': Minimum file size must be at least 1 byte

For more information, try '--help'.

~\test
❯ czkawka dup -d C:\Users\yp.wang\test\ -m 1
Set thread number to 12
Found 2 duplicated files in 1 groups with same content which took 8 B:
Size - 8 B (8) - 2 files
C:\users\yp.wang\test\test1.txt
C:\users\yp.wang\test\test2.txt
----

-------------------------------MESSAGES--------------------------------
Loaded from cache ⁨0⁩ entries
Saved to file ⁨2⁩ cache entries
Loaded from cache ⁨0⁩ entries
Saved to file ⁨0⁩ cache entries
---------------------------END OF MESSAGES-----------------------------

czkawka目前还不支持相对路径,必须使用绝对路径。另外查找重复文件最小要大于0,空文件有另外的命令。

其他命令的用法可以参考文档,还有tips&tricks

性能测试

因为czkawka是用rust编写,更快是设计目标之一,期望替代python编写的FSlint和DupeGuru,以下做了这几个工具的对比测试。

测试主机:256 GB SSD,i7-4770 CPU.

作者准备了一个磁盘并执行了测试,没有任何文件夹异常,并且禁用了对硬链接的忽略。该磁盘包含 363 215 个文件,占用 221.8 GB,并在 62093 组中有 31790 个重复文件,占用 4.1 GB。

在所有程序中都将文件最小大小设为1KB。

AppExecuting Time
FSlint 2.4.7 (First Run)86s
FSlint 2.4.7 (Second Run)43s
Czkawka 3.0.0 (First Run)8s
Czkawka 3.0.0 (Second Run)7s
DupeGuru 4.1.1 (First Run)22s
DupeGuru 4.1.1 (Second Run)21s

又使用Mprof检查了FSlint和DupeGuru的内存使用,用Heaptrack检查czkawka。

AppIdle RamMax Operational Ram UsageStabilized after search
FSlint 2.4.762 MB164 MB158 MB
Dupeguru 4.1.190 MB170 MB166 MB
Czkawka 3.0.012 MB122 MB60 MB

在Dupeguru中,启用了检查不同尺寸的图像以匹配Czkawka行为。 这两个应用程序都使用缓存机制,因此第二次扫描非常快。

检查占用 6.6GB 的 10949 个文件的类似图像:

AppScan time
Czkawka 3.0.0 (First Run)276s
Czkawka 3.0.0 (Second Run)1s
DupeGuru 4.1.1 (First Run)539s
DupeGuru 4.1.1 (Second Run)1s

检查占用 1.7GB 的 349 个文件的类似图像:

AppScan time
Czkawka 3.0.0 (First Run)54s
Czkawka 3.0.0 (Second Run)1s
DupeGuru 4.1.1 (First Run)55s
DupeGuru 4.1.1 (Second Run)1s

与其他工具的对比

Bleachbit是查找和删除临时文件的大师,而Czkawka只找到最基本的文件。因此,不应直接比较这两个应用程序或将其视为彼此的替代品。

CzkawkaFSlintDupeGuruBleachbit
LanguageRustPythonPython/Obj-CPython
OSLin,Mac,WinLinLin,Mac,WinLin,Mac,Win
FrameworkGTK 4PyGTK2Qt 5 (PyQt)/CocoaPyGTK3
Duplicate finder
Empty files
Empty folders
Temporary files
Big files
Similar images
Similar videos
Music duplicates(tags)
Invalid symlinks
Broken files
Names conflict
Invalid names/extensions
Installed packages
Bad ID
Non stripped binaries
Redundant whitespace
Overwriting files
Multiple languages
Cache support
In active developmentYesNoYesYes

Other apps

互联网上有许多与Czkawka类似的应用程序,各有长短:

GUI
  • DupeGuru - 许多自定义选项,很棒的照片比较工具
  • FSlint - 有点过时,但仍然有一些工具在 Czkawka 中不可用
  • AntiDupl.NET - 显示比较图像的大量元数据
  • Video Duplicate Finder - 查找相似的视频(令人惊讶,不是吗),支持视频缩略图
CLI

如果正在寻找真正优秀且功能丰富的控制台应用程序,可以对比下面几个工具:

  • Fclones - 查找重复项的最快工具之一,同样使用Rust编写
  • Rmlint - 不错的控制台界面,功能也丰富
  • RdFind - 快速,但用C++编写 ¯\_(ツ)_/¯

公众号 | FunIO
微信搜一搜 “funio”,发现更多精彩内容。

重复文件查找王”,一款为您以最快的速度找出指定目录中内容重复的文件列表,便于您据此清理文件,减少重复文件对磁盘空间的占用。本工具的主要功能: 提供8种匹配方法,我们称之为匹配准确度的8层,它们是: 第0层,文件名中包含指定的文字 第1层,文件名相同,文件后缀名可以不同 第2层,文件名相同,文件后缀名也必须相同 第3层,文件名相同,文件后缀名相同,文件大小也必须相同 第4层,文件的大小相同,CRC校验值也必须相同 第5层,文件名相同,文件的大小相同,CRC校验值也必须相同 第6层,文件的MD5校验值必须相同 第7层,文件名相同,文件的MD5校验值必须相同 这些匹配算法,已经能够满足绝大多数的用户的日常需要了。在查找的文件总数及内容完全相同的情况下,这7种算法,按照从小到大的顺序,查找速度递减(即占用的时间递增),但是查找的准确度递增。默认的查找方式是第4层。设置方法:“高级设置” --> “搜索方式”。 本软件的搜索算法经过了精心的整理优化,在国内外已有的、号称最优秀的同类软件相比时,本软件的速度仍然是最快的。 对于硬盘空间快速增加的今天,查找速度的优化是极其重要的。 在信息爆炸的年代,您有没有觉得"垃圾信息"也在同样地爆炸式增长呢?在一台计算机上的重复文件,基本上也可以认为是垃圾信息,因为它们一方面占用了您宝贵的IT投资资源,另一方面,对于您进行文件版本控制也是极端的不利。本软件就能为您解决这些头疼的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值