如何在IPFS中Pin一个文件?

2020-07-08 08:48:44 553
声音简介

对IPFS中,有这样一个误解----认为存储在其中的文件是永久保存的。实际上并不是这样,存储在IPFS中的文件只在某种特殊状态下才会被一直保存,这个特殊状态就是“Pin”。

 

“Pin”是IPFS中一个非常重要的概念。IPFS试图让用户认为系统中的每个文件都像是在本地一样-----“要获得这个文件得从远处的服务器下载”这样的感觉是要尽量避免的。

 

在IPFS中常用的“ipfs cat”或“ipfs get”命令执行起来是不分文件存放的位置的。尽管这已经很好了,但有时用户还希望能把某些文件或数据放在离自己更“近”的地方。

 

“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


用户评论

表情0/300
喵,没有找到相关结果~
暂时没有评论,下载喜马拉雅与主播互动
猜你喜欢
如何在婚姻中制胜

扒拉一族着力于通过运用扒拉的思维方式,启动您自身最优质的系统,换个角度解决您工作、生活、情感中的诸多实际问题,达到立得住,行的稳,享受敞亮人生的最终目标!

by:新扒拉一族

如何在生意中失败

耶格系统编辑耶格系统又叫英特莱德国际服务有限公司。是美国人德士特·耶格创建的。它是一家著名的全球性咨询及教育培训机构,专门研究在信息化时代,人们应如何正确的...

by:耶格国际企业空中课堂

如何在博弈中获取更多

博弈中的技巧,不光用在谈判上,方方面面都很有指导性。让我们一起阅读此书。...

by:听友116925582

如何在婚姻中重获幸福

如何找回幸福的婚姻?耶鲁大学婚姻情感专家重磅新作/破解再婚家庭的棘手问题如何融入一个新家庭?为什么继亲关系是核心挑战?如何处理与原生家庭的关系?怎样重获安全感,...

by:五月的三小姐

如何在职场中混得更好

福利:关注”凡事都有解(gz-evolution)”微信公众号,回复”拒绝”获取哈佛商学院教授约翰.p.科特总结的<<24种常见拒绝以及应对话术>>(我们根据网...

by:凡事都有解

在家中如何好好说话

中国人说话有一个习惯,就是在外面的时候,面对陌生人和关系一般的人,总是彬彬有礼,和颜悦色,侃侃而谈,显得很有礼貌,较少和人发生矛盾;在家里时,面对自己的家人、亲...

by:魔力镜子