IPFS的文件有不同的模式

默认模式

默认模式下, 文件会被解析并存入blocks, 同时文件的结构被存入filestore, 因为IPFS是按内容寻址的文件系统, 在添加时最外层的目录名或文件名信息会丢失, 如果需要保留名称信息, 需要在外层用目录包围(使用-w参数)

添加文件

# 添加一个文件
ipfs add some_file
# 添加文件并保留文件名(外层添加目录)
ipfs add -w some_file
# 添加整个目录
ipfs add -r some_folder/

文件管理

对于文件的查看,移动,改名,复制和删除, 用对应的命令完成, 和普通linux命令是一样的, 在这里可以重新组织你的文件结构以及重命名

# 查看, 默认路径为/,
ipfs files ls <path> # 移动和改名
ipfs files mv <src> <tgt> # 复制
ipfs files cp [-r] <src> <tgt> # 删除
ipfs files rm <path>

大二进制文件模式

对于大的二进制文件, 例如压缩包和视频等, 对底层分割好的每个小内容块进行对象化会浪费很多不必要的空间, 因为这些信息不重要并且在下次更新时就会全部丢弃. 这时候对于底层叶子节点可以使用raw blocks, 关于raw blocks和objects的区分: In IPFS, a block refers to a single unit of data, identified by its key (hash). A block can be any sort of data, and does not necessarily have any sort of format associated with it. An object, on the other hand, refers to a block that follows the Merkle DAG protobuf data format. It can be parsed and manipulated via the ipfs object command. Any given hash may represent an object or a block.

添加文件

使用raw blocks模式添加文件需要使用参数 --nocopy, 使用这个参数隐含了 --raw-leaves 参数的使用, 使用这种方式添加, 在IPFS中只存储文件的meta信息, 不存储文件内容, 在读取时, 从源文件读取. 这种方式特别节省空间.

启用 使用这种方式需要在config中开启 Experimental.FilestoreEnabled true

# 使用--nocopy模式添加文件
ipfs add -r --nocopy some_folder/
ipfs add --progress --recursive --nocopy $HOME/mounts/foo

需要注意的是, 这里的目录必须在IPFS的工作空间目录下, IPFS的工作空间就是.ipfs目录所在的路径. 如果需要将任意路经的文件包含进来, 可以使用软链接.

# 列出所有的blocks, 不加参数则列出所有, 加参数则仅列出参数对应的对象, 注意这些对象都是底层的数据段, 不包含外层的文件名和目录结构等信息
ipfs filestore ls <object_hash> # 校验所有的blocks, 不加参数则校验所有
ipfs filestore verify <object_hash>

通过--nocopy添加的文件不会出现在Files中, 在ipfs files ls中是看不到的, 这些文件在pin里面, 需要按pin的方式来管理.

通过--nocopy添加的文件, 其CID和普通模式添加的CID是不一样的, 因为从最底一层的数据块开始CID就已经不同.

文件管理

ipfs filestore对文件的管理还不够完整, 在对linux文件系统中的文件进行修改后, 可以通过ipfs add --nocopy再次同步, 但是不会删除那些已经不存在的文件对应的filestore内容. 需要等ipfs filestore rm命令的完善.

https://github.com/ipfs-filestore/go-ipfs/blob/master/filestore/README.md

IPFS 添加和管理文件的更多相关文章

  1. 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)

    原文:在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据) 我们都知道,在asp.net中修改 ...

  2. Android Fragment学习笔记(二)----Fragment界面添加和管理

    Fragment界面添加 了解过fragment的生命周期等简单知识,于是去看官方文档来了解更多相关内容,要添加fragment到我们的UI界面中,给出了两种常用的方法,第一个是在activity的布 ...

  3. 使用django表单,使网页添加上传文件,并分析文件。

    开发环境是: apache + python + django+ eclipse(开发环境) 欲达到目的: 在网页上,添加上传文件控件.然后读取csv文件,并分析csv文件. 操作步骤: django ...

  4. Linux基本命令(1)管理文件和目录的命令

    Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touc ...

  5. ARC工程中添加非ARC文件

    转载自:http://blog.csdn.net/zhenweicao/article/details/16988543 分类: IOS2013-11-27 17:02 626人阅读 评论(0) 收藏 ...

  6. puppet来管理文件和软件包

    puppet来管理文件和软件包 1 exec的使用,可以运行shell命令 为配置文件添加配置,指示写了关键部分,其他配置省略没写 代码示例如下: [root@pup manifests]# cat ...

  7. 探索Windows命令行系列(4):通过命令管理文件和文件夹

    1.文件夹操作 1.1.DIR(directory)命令 1.2.TREE 命令 1.3.CD(change directory)命令 1.4.MD(make directory)命令 1.5.RD( ...

  8. 【转】使用SQL Server 2012的FileTable轻松管理文件

    一 .FileStream和FileTable介绍 我们经常需要把结构化数据(int.Char等)和非结构化数据(如Varbinary(max))一起存储,那我们在怎么存储的呢? 1. 在SQL Se ...

  9. .NET基础 (14)管理文件和文件夹的类型

    管理文件和文件夹的类型1 如何操作文件和文件夹2 如何实现文件和文件夹的监控功能 管理文件和文件夹的类型1 如何操作文件和文件夹 .NET内建类中提供了FileInfo和DictionaryInfo两 ...

  10. python-with管理文件上下文(基本文件操作)

    什么是文件 文件是操作系统为用户提供的一个读写硬盘的虚拟单位,文件的操作就是文件的读.写. 操作过程:当我们双击文件 -<- 操作系统接收到指令请求(将用户或应用程序的读写操作转换成集体的硬盘指 ...

随机推荐

  1. VS中多个源文件中只运行其中特定文件

    1.问题 有时候一个项目中创建了多个源文件,但是我只想运行其中的一个,一起运行就会出现多个main入口的问题 2.解决方式 2.1 右键要排除的文件,点击属性 2.2 从生成中排除一项中选择是即可 2 ...

  2. [转帖]关于https://goproxy.cn,direct与https://proxy.golang.org的问题,国内无法访问https://proxy.golang.org设置了GOPROXY仍不可行

    关于https://goproxy.cn,direct与https://proxy.golang.org的问题,国内无法访问https://proxy.golang.org设置了GOPROXY仍不可行 ...

  3. 【转帖】MySQL 8.0.32如期而至

    MySQL 8.0版本计划 MySQL 8.0开始采用快速迭代开发模式,基本上是每隔3个月就发布一个新的小版本.去年1月18日(2022.1.18)发布MySQL 8.0.28,今年1月17日发布My ...

  4. 【转帖】linux 软连接的使用

    https://www.cnblogs.com/sueyyyy/p/10985443.html 软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接. 具体用法是: ...

  5. [转帖]一本正经的八卦一下CPU的自主可控

    https://zhuanlan.zhihu.com/p/36391482 (2018年的4月16日,美国商务部发布对中兴通讯出口权限禁令,禁止美国企业向其出售零部件,史称"中兴禁运事件&q ...

  6. vue3中mixins的使用

    vue3-mixins 在开发的过程中我们会遇见相同或者相似的逻辑代码. 可以通过vue的 mixin 功能抽离公共的业务逻辑, 然后通过impor再组件中引入.通过mixins注册进来. 这样我们就 ...

  7. vue3逻辑分离和页面快速展示数据

    逻辑分层 我们在使用vue3开发项目的时候, 如何进行[区域分层]呢???? 举一个简单的小粒子 一个区域有[查询逻辑.修改后的保存逻辑.新增逻辑.删除逻辑] 这个页面可能还有其他的区域.A区域.B区 ...

  8. nodejs的npm改为国内源和参数

    npm源改为国内 此方法不需要安装cnpm也可以使用淘宝镜像,提高国内访问速度 由于 Node 的官方模块仓库网速太慢,模块仓库需要切换到阿里的源. npm config set registry h ...

  9. EXPLAIN分析pgsql的性能

    EXPLAIN分析pgsql的性能 前言 EXPLAIN命令 EXPLAIN -- 显示一个语句的执行计划 命令详解 EXPLAIN输出结果展示 analyze buffers 全表扫描 索引扫描 位 ...

  10. C# 使用正则表达式

    在C#中,可以使用正则表达式来处理文本字符串.正则表达式是一种特殊的文本模式,用于匹配和搜索字符串.它可以识别特定模式,如邮箱地址.电话号码.网址等.正则表达式是C#中常用的一种文本处理技术,使用它可 ...