2016-10-01 252 views

回答

6

您只能使用IPNSipfs get重新下载后,这应该是快,如果它仍然寄托到本地存储做到这一点:

(1)首先添加(即重新添加)您文件夹递归到ipfs:ipfs add -r /path/to/folder。最后一条stdout行的第二列具有您刚刚添加的父文件夹的ipfs散列。 (原始文件仍然相同,因此哈希值也将相同。)

(2)然后发布该哈希值:ipfs name publish /ipfs/<CURRENT_PARENTFOLDER_HASH>。这将返回您的对等ID,并且您可以将链接分享为/ipns/<PEER_ID>;重复此步骤(ipfs name publish),只要文件夹内容(因此父文件夹散列)发生更改。然后ipns对象将始终指向您的文件夹的最新版本。 (3)如果您计划共享很多内容,则可以为每个共享的文件夹创建一个新的密钥对:ipfs key gen --type=rsa --size=2048 new-share-key ...然后使用该密钥(而不是默认密钥)来发布(以及稍后重新发布)该文件夹:ipfs name publish --key=new-share-key /ipfs/<CURRENT_PARENTFOLDER_HASH>

也看到这里的文档:https://ipfs.io/docs/commands/#ipfs-name-publish

0

不,你不能。 IPFS背后的概念是不变的,一个文件夹只是一个文件树,所以在添加文件夹之后你不能“添加”文件,而没有完整的文件夹。

1

这应该是容易的文件API。假设您已经添加了新的文件,以IPF问题并获得其散列,尝试:

ipfs files cp /ipfs/QmExistingLargeFolderHash /folder-to-modify 
ipfs file cp /ipfs/QmNewFileHash /folder-to-modify/new-file 

当然,这不是一个文件添加到现有的文件夹(因为文件夹和文件是不可变的),它只是创建一个副本/新版本的文件夹添加了新文件。因此,将有一个新的哈希:

ipfs files ls -l/# to get the new hash of the folder 

的文件API不脚被引用的文件或检索所有子文件夹,除非必要,所以这可以在网络中的任何节点上,而不会产生大量的流量来实现。

[编辑] 过了一会儿,我了解到,有一些事情你可以做:

  • 而不是

    ipfs file cp /ipfs/QmNewFileHash /folder-to-modify/new-file 
    

    你可以使用ipfs files write -te如果你还没有添加文件到ipfs呢。

  • 您可以启用HTTP API的写入功能,以使用PUT请求来获取文件夹新版本的散列。请参阅this blogpost
  • 您可以通过保险丝挂载ipns并写入…/ipns/local
  • 而且可能是最好的:您可以使用ipfs object patch add-link /ipfs/QmExistingLargeFolderHash new-file /ipfs/QmNewFileHash一步完成
相关问题