![如何检测种子内部以及跨种子的重复文件?](https://linux22.com/image/1561125/%E5%A6%82%E4%BD%95%E6%A3%80%E6%B5%8B%E7%A7%8D%E5%AD%90%E5%86%85%E9%83%A8%E4%BB%A5%E5%8F%8A%E8%B7%A8%E7%A7%8D%E5%AD%90%E7%9A%84%E9%87%8D%E5%A4%8D%E6%96%87%E4%BB%B6%EF%BC%9F.png)
如果我正在下载一堆种子,有没有办法或客户端可以检测已下载的文件并停止下载?
编辑: 从评论中澄清。是的,这意味着在不同的种子之间找到重复的文件并避免下载它们。
我知道有些客户端允许您选择要下载 torrent 中的哪些文件。在下载 torrent 之前,是否可以获取单个文件的校验和?如果可以,我可以编写一个脚本或类似的东西。
答案1
无法根据 .torrent 文件中的数据确定一个 torrent 中的文件是否也存在于另一个 torrent 中。标准 BitTorrent 协议中根本不支持重复数据删除。
当创建一个 torrent 时,其中的所有文件被连接在一起,然后被分成几块。
example:
Files |---#1|#2|---#3|-----------------------#4|#5|------#6|-----#7|-------#8|
Pieces |--0|--1|--2|--3|--4|--5|--6|--7|--8|--9|-10|-11|-12|-13|-14|-15|-16|17|
- 除最后一个部分外,所有部分的长度均相同。
- 一个文件有一个或多个片段。
- 一个片段可能包含多个文件(的部分)。
- 内部文件和片段边界对齐的情况非常少见(除非使用填充文件)。
- 多文件 torrent 中的一个文件几乎总是有一个与另一个文件共享的部分。
问题是不可能从片段哈希创建文件哈希。
(@jdwolf 即使文件 #1 和文件 #3 相同,它们的所有片段哈希值也会不同。)
有一些 torrent 创建程序可以选择添加文件哈希值,但据我所知它在任何地方都没有使用。