对IPFS中,有这样一个误解----认为存储在其中的文件是永久保存的。实际上并不是这样,存储在IPFS中的文件只在某种特殊状态下才会被一直保存,这个特殊状态就是“Pin”。 “Pin”是IPFS中一个非常重要的概念。IPFS试图让用户认为系统中的每个文件都像是在本地一样-----“要获得这个文件得从远处的服务器下载”这样的感觉是要尽量避免的。 在IPFS中常用的“ipfs cat”或“ipfsget”命令执行起来是不分文件存放的位置的。尽管这已经很好了,但有时用户还希望能把某些文件或数据放在离自己更“近”的地方。 “Pin”就是这样一种机制,它让用户告诉IPFS系统总是把文件在本地保留一个备份。 IPFS的缓存机制是比较激进的,在这种机制的作用下,通常当用户对某个文件执行了某种操作后,系统会将该文件在本地保留,但只在本地保留很短的一段时间,因为它会被IPFS的垃圾清理机制所清理掉。 IPFS的这种垃圾清理机制每隔一段时间会清理一些被视为“垃圾”的文件。 为了防止保存在本地的文件被垃圾清理机制清理掉,用户就要用到“pin”的功能了。在默认状况下通过“ipfs add”的文件会被循环地“pin”住,以保证它们不被清理。 具体的命令如下: 将文件“foo”添加到IPFS中: echo "ipfs rocks" > foo ipfs add foo 注意,这里将“foo”文件添加到IPFS后,会产生一个该文件的哈希值。这个哈希值后面会用到。 列举所有被pin的文件: ipfs pin ls --type=all 将“foo”文件从被“pin”文件中移走: ipfs pin rm <foo hash> ipfs pin rm -r <foo hash> 注意,这里“foo hash”的意思是“foo”文件的哈希值。 检查“foo”文件是否还在被“pin”文件列表中: ipfs pin ls --type=all pin的状态有三种: 在上面的命令中,可能你已经注意到了“ipfs pin rm”是不能执行的,运行这个命令后,系统会提示用户,foo文件的哈希值被“循环pin”住了。 这是什么意思呢?在IPFS中有三种“pin”的状态。 -直接pin(Direct Pin),这种pin只会pin一个数据块,其它与这个数据块相关的数据块都不会被pin。 -循环pin(Recursive Pin),这种pin会pin一个数据块以及这个数据块所有的子块。 -简介pin(Indirect Pin),这种pin会pin这个数据块的父块。 当一个文件或数据被pin后,垃圾清理器是不能清理它的,不信可以试试下列命令: 首先添加foo文件(默认该文件会被pin): ipfs add foo 运行垃圾清理器清理垃圾: ipfs repo gc 检查该文件是否还存在: ipfs cat <foo hash> 但是如果文件“foo”不再是pin的状态了(变成了unpinned)。 将foo文件从被pin文件中拿掉,使其状态变为unpinned ipfs pin rm -r <foo hash> 运行垃圾清理器: ipfs repo gc 查看该文件是否还存在于IPFS中: ipfs cat <foo hash> 这时我们会发现不是pin状态的foo文件被垃圾清理器删掉了。 我是IPFS/Filecoin社区发起人晓熙(加入社区,联系v号: liandaoxixi),IPFS/Filecoin是全球共识最大的去中心化存储项目,我会定期在社区分享专业的资讯,为IPFS/Filecoin爱好者建设一个共赢的学习社区。 参考链接:https://docs.ipfs.io/how-to/pin-files/#three-kinds-of-pins —- 编译者/作者:FIL社区 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
如何在IPFS中Pin一个文件?
2020-07-12 FIL社区 来源:区块链网络
LOADING...
相关阅读:
- FilecoinArchives启动Filecoin承载人类文明2020-10-31
- 分布式存储正舵者两项存储应用取得好成绩受邀参加ipfs官方线上应用生2020-10-30
- 贵阳市区政府领导莅临点链考察点链贵阳生态数据基地建设即将拉开帷2020-10-30
- 你知道蚂蚁IPO2.1万亿市值是靠什么资产吗?2020-10-30
- 数据显示,DEX交易量下降反映出DeFi投资者转向了比特币2020-10-30