在目录中查找重复文件的模块
find-duplicate-files的Python项目详细描述
查找重复文件
查找文件系统上给定目录中的所有重复文件。
此模块将遍历给定的目录树,然后按大小对文件进行分组 (表示可能重复的内容)然后比较文件的哈希。 这个散列可以通过传入一个chunk arg来分块。这将计算文件块的初始哈希 如果第一个哈希匹配,则在计算完整哈希之前,从而避免计算 对大文件进行昂贵的散列运算。
先决条件
- Python3.6.5
安装
> pip install find-duplicate-files
> find_duplicate_files --dir /path/to/dir --chunk 2
作为python模块运行:
import find_duplicate_files
# required arg: dir, optional: chunk
find_duplicate_files.find_duplicate_files("/path/to/dir", chunk=1)
运行测试
要运行测试,请使用以下命令:
> cd <FindDuplicateFiles directory>
> python -m tests.run
测试数据
提供的测试数据采用以下形式-
- tests/test_data/testfindduplicatefilesbyhash:5.txt大小相等的文件(29字节)。1.txt和3.txt是相同的内容。4.txt和5.txt是相同的内容。2.txt是不同的内容(但大小相同)。用于验证find_duplicate_files.find_duplicate_files_by_hash函数。
- tests/test_data/test generate hash/1.txt:1.txt文件,用于比较find_duplicate_files.generate_hash的结果。
性能
一个可选的性能脚本,用于在查找重复文件时比较对完整文件进行哈希处理与分块方法的性能。输出性能指标。 运行:
> cd <FindDuplicateFiles/metrics directory>
> python performance.py
示例输出:
Method 1 - Generate full hash returns correct duplicates.Time 0.006515709001178038
Method 2 - Generate chunked hash returns correct duplicates.Time 0.006872908999866922
基准
Attempt | #1 | #2 | #3 | #4 |
---|---|---|---|---|
Chunk Size | 1 | 1 | 8 | 8 |
Seconds | 5.4 | 4.16 | 3.25 | 3.27 |
测试数据:10.9GB,3653个文件,128个副本,最大文件~156MB
进一步优化
- 研究给定公共文件类型的最佳块大小
- 研究线程性能
- 研究不同的哈希算法
- 研究递归分块-即消除不同的文件