arm中的.a文件如何产生的_如何在IPFS中Pin一个文件?
对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
ipfs pin rm -r
注意,这里“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”不再是pin的状态了(变成了unpinned)。
将foo文件从被pin文件中拿掉,使其状态变为unpinned
ipfs pin rm -r
运行垃圾清理器:
ipfs repo gc
查看该文件是否还存在于IPFS中:
ipfs cat
这时我们会发现不是pin状态的foo文件被垃圾清理器删掉了。
参考链接:
https://docs.ipfs.io/how-to/pin-files/#three-kinds-of-pins
arm中的.a文件如何产生的_如何在IPFS中Pin一个文件?相关推荐
- linux中python如何调用matlab的数据_?如何在Python中加入多个数据帧?
全文共2235字,预计学习时长7分钟 来源:Pexels 初学Python编程的人,面临的是各种未知的挑战. 下面是一个几乎让所有更有抱负的数据科学家都感到意外的场景: 你正在处理一个从多个源收集数据 ...
- git 还原文件到其他版本_如何在Git中还原旧文件版本
git 还原文件到其他版本 读: 第1部分:什么是Git? 第2部分:Git入门 第3部分:创建第一个Git存储库 第4部分:如何在Git中还原旧文件版本 第5部分:3个用于Git的图形工具 第6部分 ...
- python中不可以使用类名访问的是_如何在Python中访问当前执行的模块或类名?
我想能够从导入的模块中动态地检索当前执行的模块或类名.这是一些代码: foo.py: def f(): print __name__ bar.py: from foo import f def b() ...
- excelexportentity中设置null不显示的方法_如何在 Creator3D 中切换模型贴图,超级简单!...
效果预览 前两天有伙伴在 QQ 上询问,如何在 Creator 3D 中切换模型贴图.Shawn 之前也没尝试过,不过根据之前 Cocos Creator 的经验以及这几天对 Creator 3D 的 ...
- python中斜杠加引号什么意思_如何在Python中转义反斜杠和单引号或双引号?
你是怎么做到的 如果你的"长字符串"是从文件中读取的(正如你在评论中提到的),那么你的问题是误导性的.因为你显然不完全理解逃逸的工作原理,所以你写下的问题可能与你真正的问题不同. ...
- java中如何检查字符串都是数字_如何在Java中检查字符串是否为数字?
我们将检查字符串是否为数字-借助逻辑,我们将解决此问题,第一步,我们将使用一个名为str的字符串变量,并将任何值存储在其中. 在第二步中,我们将使用一个名为str_numeric的布尔变量,该变量存储 ...
- hdfs中与file数组类似的数组_如何在 JavaScript 中克隆数组
作者:Yazeed Bzadough 译者:allen JavaScript 有很多方法可以做任何事情,现在我们研究数组. 1.扩展运算符(浅拷贝) 自从 ES6 发布以来,这一直是最受欢迎的方法.这 ...
- arm中的.a文件如何产生的_可变文件系统:如何在IPFS中处理文件?
IPFS或星际文件系统是一种点对点(P2P)网络协议,用于共享分布式Web上的数据.顾名思义,您可以将IPFS视为文件系统,它具有一些独特的特性,使其成为安全,分散式共享的理想选择. 在这里您可以了解 ...
- python移动文件中某个内容_如何在Python中移动文件
如何在Python中移动文件 我查看了Python $ mv ...接口,但无法找到移动文件的方法. 我如何在Python中执行相当于$ mv ...的操作? >>> source_ ...
最新文章
- 阻塞队列之七:DelayQueue延时队列
- 实验 3 检查点和参数化实验报告--软件功能测试与性能测试实验
- 阿里云肖力:跳过量变过程的安全质变
- 袁桂英(帮别人名字作诗)
- 信息学奥赛一本通 1171:大整数的因子 | OpenJudge NOI 1.6 13:大整数的因子
- fabric8 java api,kubectl apply -f equivalent in fabric8 java api | 易学教程
- SpringMVC Java config freemarker
- linux access函数报错,详解汇编语言MOV指令
- html5 progressbar,jQuery进度条插件NUMBERPROGRESSBAR
- iPhone中BigBoss源添加以及SBSettings安装。
- git加速 用谷歌浏览器插件
- 安全芯片的功能是什么
- windows2012R2安装python3.x版本报错0x80240017
- android获取wifi开关,Android WiFi开发(一)--WiFi开关与状态监听
- Qt经典蓝牙系列四(经典蓝牙客户端的设计 纯Qt代码) android/windows10
- java离群值,R从数据框中按组别移除离群值
- 广告业务系统 之 数据中转站 —— “日志中心-实时服务监控”
- 【pandas 类库】
- 《Cortex-CM3权威指南》——Cortex-CM3基础
- 微信特殊字符php,php 获取微信昵称时 过滤特殊字符