洪流填充文件

Torrent padding files

有人为 torrent 创建了填充文件吗? 现在有多少客户使用这些东西? "padding files"全面吗?

我在ctorrent,ttorent, trasmission等新客户端没有发现这个功能

您是否实现了此功能或对此有一些理论或历史?

我将不胜感激!

此功能最初是由 BitComet 实现的(在我看来,实现质量相当差)作为一种方法,可以更轻松地取消 select 某些文件的下载。由于 bittorrent 下载片段,片段可能跨越多个文件。否则,当您删除 select 某些文件时,您可能仍会得到它的第一位和最后一位(因为它与其他文件所需的部分重叠)。

引入 pad-files 可确保文件对齐并消除此问题。

值得注意的是,uTorrent 会将这些剩余的部分放在一个单独的文件中,称为部分文件。

在更现代的时代,几年后,出于不同的原因,libtorrent 和 uTorrent 获得了对 pad 文件的一些支持。主要是这两个:

  1. uTorrent 实现了对 "mutable torrents" 的支持,能够用新版本替换 torrent 并有效地 transition/duplicate 所有常见内容到新的 torrent。为了大规模有效地使用此功能,您必须将大文件对齐,以避免必须重新散列所有内容(即您只想散列新内容,而不是保持不变的内容)。因此,pad 文件很有用。

  2. 以文件内的簇对齐偏移量访问文件系统可能比未对齐访问便宜很多。它还允许使用一些更复杂的 API,这些 API 可能会限制文件偏移量(async.I/O)。对于内存映射文件也是如此。

对 pad 文件的主要批评(据我所知)来自 BitComet 的实施,这对未实施它的客户来说是相当干扰的。它会创建具有长文件名的突出文件,建议下载更新版本的 BitComet。至少在 hte uTorrent 阵营中,这让很多用户感到不安,以至于创建了一些 .torrent 文件来故意破坏 bitcomet 中的此功能(其中 pad 文件不全为零,bitcomet 会假设,所以它失败了哈希)。

有更优雅的方式来实现 pad 文件,我相信 libtorrent 和 uTorrent 做得更好。例如,您可以在创建 torrent 时将所有 pad 文件合并到一个(隐藏)目录中。 uTorrent 也会将部分 pad 文件放在它的 partfile 中。

关于支持 pad 文件的客户端,这里有一些我能想到的(给出足够新的版本):

  1. uTorrent
  2. 比特流
  3. 洪水
  4. qBitTorrent
  5. BitComet(我假设它仍然支持它)
  6. 任何其他使用 libtorrent (rasterbar) 的客户端