LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > IPFS操作教程9: Pinning-锁定文件永久保存

IPFS操作教程9: Pinning-锁定文件永久保存

2019-10-23 Online 来源:区块链网络

yDMwncyvYNOfEmGYXbFPrtmoLJPtJVnwJPdJmr3V.jpeg

本节学习目标

学会使用pin命令锁定你喜欢的数据

明白你上传的数据具体存到哪了,是以什么方式存储的,如实际硬盘存储还是缓存存储。

手动清理ipfs缓存

学习步骤 第一步:查看本地上传和检索到的数据存哪了

我们本地上传到ipfs的数据,就是使用ipfs add命令添加到本地ipfs存储库了。ipfs的存储库有些人翻译成ipfs资源库,一个东西。这个存储库在我们ipfs init时,在本机用户名下创建的,不过是个隐藏文件夹,显示隐藏文件后,你会看见一个./ipfs的文件夹,这就是本机的ipfs存储库。打开./ipfs文件夹之后,你会看到:1571712988040638.jpg

我们添加的数据就存储在上图中blocks中了,不过是以块数据的类型存储的。 从ipfs网络下载的数据,即使用ipfs get得到的数据同样也存储到blocks中了。

第二步:使用pin锁定你喜欢的数据

存储在blocks中的数据,有两种方式,一个是硬盘存储(永久保存),另一个是缓存存储(系统定期清理)。用户使用ipfs add添加的数据都是硬盘存储的,而ipfs get到的数据都是以缓存存储的。这里将提到pin的作用。

实际上blocks中的数据存储方式是由pin决定的。pin的作用是锁定数据,保证数据永不被系统清理掉。上面说的两种存储方式,现在可以说成一个是数据被pin处理过的,另一个是没有被处理过的。

ipfs系统会默认将ipfs init后的数据以及ipfs add的数据进行pin处理后存储到blocks中的。我们可以通过ipfs pin ls查看pin过的数据,如下:

$?ipfs?pin?lsQmZTR5bcpQD7cFgTorqxZDYaew1Wqgfbd2ud9QqGPAkK2V?indirectQmQ5vhrL7uv6tuoN9KeVBwd4PwfQkXdVVmDLUZuTNxqgvm?indirectQmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv?recursiveQmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn?recursiveQmWj7uThVH9a2HBiewA53U6g1uwzj1N4r4LNDSV7V3BgGi?indirectQmXgqKTbzdh83pQtKFb19SpMCpDDcKR2ujqk3pKph9aCNF?indirectQmaTbcssmxUTB7na2ggMDTBXaUbSJzJsT5xQEnj3KJx9VL?recursiveQmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7?indirectQmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T?recursiveQmPZ9gcCEpqKTo6aq61g2nXGUhM4iCL3ewB6LDXZCtioEB?indirectQmREJwRsxCuENyEhH2cfHbA7Q3g43MBAkUFFaV36TZ3YwH?recursiveQmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y?indirectQmZmr5ECfGMJLJGM1yx8LNQznYraxCXqPzN6S6V3R7NxFP?indirectQmejvEPop4D7YUadeGqYWmZxHhLc4JBUCzJJHWMzdcMe2y?indirect

你可以add一个小数据,查看pin列表中,有没有刚刚产生的hash值?

而ipfs get获取到的数据,并没有被pin处理过,将属于缓存存储。但如果你对这份数据很感兴趣,想永久保存它,ok,没问题,我们可以手动pin处理该数据,将其转换为硬盘存储,命令很简单?ipfs pin add <hash>?在终端的操作如下:

localhost:ipfs-tutorial?zhanghengxing$?ipfs?pin?add?QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T pinned?QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T?recursively

现在你再打开pin列表,该hash将会出现在里面。

如果你对这个数据不感兴趣了,我们可以解除它的pin锁定,命令ipfs pin rm -r <foo hash>。 操作如下:

$?ipfs?pin?rm?-r?QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T unpinned?QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T

这样这个数据就被解除pin了。pin列表中将不会存在这个hash值。

小提示:ipfs cat的数据都是在blocks中存储的数据,如果blocks中没有该数据,将会从ipfs网络中请求数据。

??:接下来的操作需要关掉本地ipfs节点。

我获取下解除pin的数据还在不在?

$?ipfs?cat?QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T liyc1215

数据还存在。

缓存的有效期是多长时间呢?我不确定,

我们可以手动清理缓存,命令ipfs repo gc,操作如下:

$?ipfs?repo?gcremoved?QmVvCAgjEgTVMpm9ng3Re9ByiCSZDaXiotmv3DnfywDq4tremoved?QmXgnwQn6xZUYXtq8gtKejDffU2cnigqiHQ6CrKWK94PUjremoved?Qmc7cgRoGHfvepuBEk1TY3coByY9bwH3AsXnoUvtnQjPSrremoved?QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7Tremoved?QmbUNyTXGMXj1N4symorb9ZuN5vFWxw6M7NFFox8AeeuDkremoved?QmPymDr8PPpyBXtFPDncrybF9V1G6XmGuamhc6r3BVFRXnremoved?QmP4z1hBdsGsLEHGDCx15VBo8E7XqouUs3tZrhKWBfsYGx

被清理的就有QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T。 现在我们再cat这个数据,还能吗?

$?ipfs?cat?QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7TError:?merkledag:?not?found

数据已经找不到了。

明白了pin的使用,赶快锁定你喜欢的数据吧。

作者:

区块链高级工程师、go语言工程师、IPFS早期研究者。网络著书有《IPFS一问一答》、《IPFS操作教程》、《区块链密码学》、《区块链共识算法》;跟踪并翻译报道《IPFS Weekly》,研究并翻译IPFS、Filecoin白皮书,业界知名专家学者——张默默老师!

—-

编译者/作者:Online

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...