使用torrent协议进行分散备份

时间:2012-01-04 01:43:40

标签: open-source backup project bittorrent

我正在创建一个创建客户端的想法,该客户端将使用今天在torrent下载客户端(例如uTorrrent或Vuze)中使用的torrent协议来创建:

客户端软件:

  1. 选择您要备份的文件
  2. 为每个文件创建类似描述符文件的torrent
  3. 根据关键词
  4. 提供文件的可选加密
  5. 让您选择要与其他客户交易的冗余 (冗余将基于“给予 - 采取”原则。如果要备份100MB五次,则必须在系统中提供额外的500MB自己的存储空间。文件备份不会仅在5个客户端中分发,但它将根据设置中指定的物理距离,尽可能多地利用提供存储的客户端。
  6. 可选:

    1. 我正在考虑包含边缘文件共享。如果您在备份存储中共享非加密文件,并且更喜欢将其端口80打开以进行公共HTTP共享的客户端。但这很有诱惑力,因为我很难想出一个简单的方案,访问者会选择最近的备份客户端。

    2. 包含允许使用torrent协议在两个系统之间进行文件传输(类似于FTP和GUI)样式的文件管理器。

    3. 我正在考虑将其创建为服务API项目(有点像http://www.elasticsearch.org),它可以与任何容器集成,例如tomcat和spring,或者只是简单的Swing。

      这将是P2P开源项目。由于我对我对torrent协议的理解不完全有信心,因此问题是:

      以上是否可以使用torrent技术的当前状态(我应该在哪里为这个项目招募java开发人员)

      如果这是错误的发布位置,请将其移至更合适的网站。

2 个答案:

答案 0 :(得分:7)

你正在考虑错误的技术。你想要的是使用Vandermonde矩阵的erasure code。这允许您做的是获得相同级别的保护以防丢失数据,而无需存储几乎相同数量的副本。 Luigi Rizzo的开源实现非常有效。

此代码允许您执行的操作是获取8MB数据块并将其切割为任意数量的1MB块,以便任何其中八个可以重建原始数据。这使您可以获得与存储数据大小增加三倍相同的保护级别,而不会使存储的数据大小加倍。

您可以按照自己的方式调整参数。在Luigi Rizzo的实现中,有256个块的限制。但是您可以控制块大小和重建数据所需的块数。

您无需生成或存储所有可能的块。如果将80MB的数据块切割成8MB的块,这样任何10个块都可以恢复原始数据,那么最多可以构建256个这样的块。你可能只想要20个左右。

答案 1 :(得分:1)

你可能很难执行互惠存储功能,我认为这对于大规模采用至关重要(最后,很好地利用你在谷物盒中获得的那些3TB驱动器!)你可能希望研究这些机制BitCoin的{{3}},看看是否有任何工具可以根据您自己的需要窃取或采用分发的不可否认的存储证明。