合并未完成的 torrent 文件

合并未完成的 torrent 文件

是否可以合并两个相同的未完成的 torrent 文件?例如,我下载了一个包含 2 个部分的 torrent,但我只下载了第一个部分,而我的朋友下载了第二个部分。是否可以合并这两个文件,以便我得到一个完整的 torrent。

答案1

是的,你可以这样做托拉姆实用程序。它使用任意数量的部分或完全下载的文件重建 torrernt 的下载目录。因此,如果您的文件都在~/下载/种子/您可以使用:

torram -c -o <the_directory_where_to_put_reconstructed_files> <yourtorrentfile.torrent> ~/Download

不管你的文件具体在哪里——只要指定它们两个的父目录就可以了(这就是我使用的原因~/下载/在示例中)。如果你不确定,你甚至可以使用‘/’作为最后一个参数 - 该工具以递归方式扫描目录,根据文件大小查找候选文件,通过 md5 哈希检查它们的块,并将每个找到的好的部分合并到最终文件中。

答案2

我不确定你的问题只是理论上的还是真正的问题......将以理论上的回答......

只要完整的文件完成,从技术上来说可以 - 我不完全确定实际上完成此任务的最佳程序。

更好的解决方案可能是下载 .torrent 文件并将其修改为您和您的朋友之间的私人跟踪器,以便你们彼此完成。

答案3

如果你有种子文件两个独立的人在不同的系统上下载,并希望将 B 下载的内容带到 A 的系统上,最直接、最明显的做法就是直接将 B 的文件复制到 A 的 torrent 中,然后在 A 的系统上恢复 torrent。我使用过的所有 Bittorrent 对等程序在开始确定文件在文件中的位置时都会扫描文件。因此从文件恢复不是问题。

但是 - 仅当 torrent 由多个文件组成,并且 B 拥有多个完整的文件,或者 A 拥有多个未开始下载的不完整文件时,这才会对您有帮助。

如果您用 B 的同名文件覆盖 A 的文件,那么您将不会“合并”他们之间已经下载的内容,而是从 B 停止下载该文件的位置开始。

如果您的 torrent 只是非​​常大的单个文件,那么这对您没有帮助,您只是从 B 停止下载的地方继续下载。

否则合并种子正如@Alexey Markov 在评论中所建议的那样。我没有用过这个实用程序,但它似乎能满足你的要求。

答案4

如果它们是同一个 torrent 的两个不同文件,您只需将两个文件移动到同一个(未完成的)下载数据(文件名需要与目标完全一致)。然后重新检查,您的 Bittorrent 客户端会将您的新文件情况与已知的 torrent 校验和进行比较。

如果您下载的片段来自同一个文件。情况会变得更糟。我很奇怪为什么没有人为此编写一个工具,因为潜在工具的算法非常直接和简单:

  • 读取所有校验和
  • 打开两个/所有文件/未完成的下载
  • 循环遍历所有块
    • 检查其中一个下载是否包含正确的哈希值
    • 获取此哈希并将其写入“目标下载”
  • 删除所有其他输入文件

正如前面所说,对于工具来说,这是一项简单的任务。如果您没有这样的工具(我不知道),您可以手动合并文件,这在您的客户端没有下载垃圾(=与校验和不匹配的部分)的情况下有效。在这种情况下,您可以使用仅复制非空块的工具。dd if=inputfile.dat of=outputfile.dat bs=1024 conv=notrunc,sparse可以做到这一点,只需将bs=(块大小)参数调整为下载文件的块大小。最后,在 Torrent 客户端中重新扫描您的文件,它应该会找到比以前更多的块。

相关内容