#volume #detect #ntfs #duplicates #windows #duplicated

bin+lib ddup

用于检测 Windows NTFS 卷中可能重复的文件的工具

4 个版本

0.0.4 2020 年 4 月 5 日
0.0.3 2020 年 4 月 5 日
0.0.2-alpha2020 年 4 月 2 日
0.0.1-alpha2020 年 4 月 2 日

#1398文件系统

42 次每月下载

MIT 许可证

24KB
532 代码行

ddup

ddup (检测重复)是一个非常快的工具,可以识别 Windows NTFS 卷中可能重复的文件。

用法

递归扫描 C:

ddup C:

递归扫描 C:,搜索 .dmp 文件(不区分大小写)

ddup C: -m **\*.dmp -i

输出

Scanning drive C: with matcher `**\*.dmp` (case-sensitive) [Fuzzy comparison]
[1/3] Generating recursive dirlist
Finished in 7.798245 seconds
[2/3] Grouping by file size
Finished in 0.0028928 seconds
[3/3] Grouping by hash in thread pool
Potential duplicates [84654 bytes]
	C:\Windows\LiveKernelReports\NDIS-20190504-0002.dmp
	C:\ProgramData\Microsoft\Windows\Containers\Dumps\f9292c13-143c-4070-98b5-7e12e2afddfc.dmp
Finished in 0.001117 seconds
Overall finished in 7.857446 seconds

安装

从 crates.io 安装

cargo install ddup

从存储库安装

cargo install --git https://github.com/netaneld122/ddup

实现

此工具是用 Rust 编写的。

ddup 通过利用 NTFS USN 日志 机制来获取递归目录列表,以便读取 MFT(《主文件表》)条目的 USN(更改跟踪)记录。

可以通过以下 IOCTL 获取 Windows USN 记录

USN 记录代表文件或目录,彼此之间相互链接,因此要解析文件的完整路径
必须在记录上执行类似于 SQL 的“递归连接”,通过 HashMap 实现。

解析完整路径后,我们开始通过多次迭代来比较文件

  • 找到具有相同大小的文件组
  • 使用模糊哈希同时在所有核心上比较文件

结果很可能相同,尽管这不是严格保证的。
要确保完全相同,请使用 --strict 标志(但这可能会严重影响性能)

请注意,由于实现的方式,ddup 需要提升到管理员权限。

依赖关系

~5–14MB
~153K SLoC