假设您有几个社区成员,他们一直在项目的某些部分上进行合作,现在想要分发他们的结果。作为一个虚构的例子,我们假设引擎团队有一个名为“engine.data”的文件,轮子团队有“wheels.data”,安全带团队有“seatbelts.data”,等等。
期望的结果是一个 car.torrent 文件,其中包含 engine.data、wheels.data、seatbelts.data 等,社区可以在他们之间以及公众之间共享这些文件。
每个团队的文件都被视为冻结和最终文件,一旦包含在此种子中,将不会更新。
社区的每个成员都有自己数据的完整版本,但没有成员拥有其他任何人的数据。如果洪流已经存在,没问题!每个成员在接收他们没有的块时播种他们拥有的块......这正是 BitTorrent 的设计工作方式。但在这种情况下,尚未创建任何 torrent。是真的吗?如果是这样,怎么做?
不,这不是洪流的工作方式。当你创建一个种子时,你推送数据应该是什么,客户端将他们拥有的内容与存储在服务器上的内容进行比较。因此,服务器不会将其添加到服务器上的洪流中,而是会删除其数据。
您想要做的是拥有一个全局 torrent 服务器,每个成员都可以将他们的部分添加为 torrent,以便整个项目组可以下载所有单独的 torrent 并获得一个整体。您只需要一个跟踪所有种子的种子服务器,但无论如何这是一个要求,除非您只进行对等分发。我没有这方面的经验,所以我不知道使用它有多容易。
另外,请记住,一旦创建了 torrent,最初的创建者就不能只编辑他们的文件并期望它更新。相反,torrent 也会用 torrent 中的内容覆盖他们的更改。
每次有更新时都必须创建一个新的 torrent。
Torrent 只是基于快照的分发,而不是更新服务。如果您想要更新,请改用基于云的存储解决方案,例如 OneDrive、Google Drive、DropBox 等...
理论上这是可能的,但我认为没有现成的工具可以做到这一点。
创建 .torrent 文件的核心过程大致是:
torrent["info"]["files"]
;torrent["info"]["pieces"]
.torrent
结构并转储到 .torrent 文件中。没有根本原因为什么在第 1 步中您不能从多个来源组装列表,确定哪个来源具有哪些片段范围,并且在第 4 步中您不能要求每台机器为其自己的片段提供哈希值。您只需要编写自己的工具来完成所有这些工作。
(如果文件长度是片段大小的精确倍数,这会有所帮助,但是一些 BitTorrent 应用程序已经插入空的“填充”文件以保持文件对齐,所以你可以这样做。)
对于一个成员来说,先下载其他所有人的数据(例如,为每个组件创建单独的 torrent)然后以创建 torrent 的通常方式从这些 torrent 中创建一个超级 torrent 可能会更简单。
或者,您可以查看其他软件,例如
dat
.