有没有人为 torrent 创建填充文件?现在有多少客户使用这些东西?“填充文件”是否全面?
我没有在 ctorrent、ttorent、trasmission 等新客户端中发现此功能。
您是否有此功能的实现或有关此的一些理论或历史?
我将不胜感激!
有没有人为 torrent 创建填充文件?现在有多少客户使用这些东西?“填充文件”是否全面?
我没有在 ctorrent、ttorent、trasmission 等新客户端中发现此功能。
您是否有此功能的实现或有关此的一些理论或历史?
我将不胜感激!
这个功能最初是由 BitComet 实现的(在我看来实现质量相当差),作为一种更简单地取消选择某些文件的下载方式。由于 bittorrent 下载片段,片段可能跨越多个文件。否则,当您取消选择某些文件时,您可能仍然会得到它的第一个和最后一个位(因为它与其他文件所需的部分重叠)。
引入 pad-files 可确保文件对齐到各个部分并消除此问题。
值得注意的是,uTorrent 会将这些剩余部分粘贴在一个单独的文件中,称为零件文件。
在更现代的几年后,libtorrent 和 uTorrent 出于不同的原因获得了对 pad 文件的一些支持。主要是这两个:
uTorrent 实现了对“可变种子”的支持,即用新版本替换种子并有效地将所有常见内容转换/复制到新种子的能力。为了有效地大规模使用此功能,您必须将大文件对齐,以避免重新散列所有内容(即您只想散列新内容,而不是保持不变的内容)。出于这个原因,填充文件很有用。
在文件中以集群对齐的偏移量访问文件系统可能比未对齐的访问便宜很多。它还允许使用一些更复杂的 API,这些 API 可能会限制文件偏移(异步 I/O)。这也适用于内存映射文件。
对 pad 文件的主要批评(据我所知)来自 BitComet 的实现,这对没有实现它的客户来说是相当侵入性的。它将创建具有长文件名的突出文件,建议下载较新版本的 BitComet。至少在 uTorrent 阵营中,这让很多用户感到不安,以至于创建了一些 .torrent 文件以故意在 bitcomet 中使用此功能(其中 pad 文件并非全为零,bitcomet 会假设,所以它失败了哈希)。
有更优雅的方式来实现 pad 文件,我相信 libtorrent 和 uTorrent 做得更好。例如,您可以在创建 torrent 时将所有 pad 文件合并到(隐藏)目录中。uTorrent 也会将部分 pad 文件放在它的 partfile 中。
至于支持 pad 文件的客户,这里有一些我能想到的(考虑到足够新的版本):