美文网首页
IPFS 学习笔记(三)IPFS初探-基本操作

IPFS 学习笔记(三)IPFS初探-基本操作

作者: kamiSDY | 来源:发表于2018-05-24 13:43 被阅读0次

下载与安装

一般有三种安装方式:go-ipfs

  1. 直接在此下载二进制文件并移入/usr/local/bin/中;
  2. 使用sudo snap install ipfs IPFS- snap安装
  3. 从源码编译--官方github的方法--使用go get或者直接download进行make install

这里我们采用第一种,下载官方编译后的版本,然后进行安装:

  • 从官方下载压缩包,并解压到指定位置:https://dist.ipfs.io/#go-ipfs
  • mv ipfs 到可用的bin目录下(/usr/local/bin/ipfs或者~/bin/ipfs)

初步使用-创建ipfs节点&启动服务

  1. 在用户根目录创建 .ipfs
  2. 在目录下 ipfs init初始化一个ipfs node节点(类似于本地仓库)
  3. ipfs id :查看节点属性
  • 里面有一个节点id
  1. 修改节点配置需要
export EDITOR=/usr/bin/subl  //初始化一个编辑器
ipfs config edit
  1. 启动IPFS节点服务器:ipfs daemon
  • 如果需要暴露给外界,并提供访问,则需要配置:跨域资源共享CORS配置
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
  1. 验证服务访问情况
ipfs cat /ipfs/{nodeid}/readme
  1. 查看WebUI
http://localhost:5001/webui
  1. 查看相关命令
ipfs —help

注意访问是否需要屏蔽防火墙

运维和使用:

  1. 添加file
  • ipfs add filename 添加文件数据
  • ipfs cat hash 获取数据(文件)

但是现在官网还没有加入,所以无法通过http://ipfs.io/ipfs/hash 进行访问。 这是ipfs网络的官方网关-文件浏览器。在没有打开daemon时,添加是无效的。打开ipfs daemon,然后在添加file。是可以在官网进行访问的。(当然前提是你的daemon能够和官方网关在同一个网络中,你懂的。这个后面的文章会涉及)

  1. 添加文件夹
    同时我们可以在IPFS的根目录中创建文件夹,然后将文件进行移动。
    cp不会改变hash。但是mv会改变hash的寻址。
    这里只是在ipfs的文件系统(并不是local文件系统中的ipfs根目录)创建目录。然后可以在这个目录底下创建文件。
  • ipfs files mkdir /targetPath
  • ipfs files cp /ipfs/hashcode /targetPath/file.txt
  • ipfs files ls
  • ipfs files read filepath
  1. 添加文件
    ipfs add -r path
    他会产生一个目录hash和这个目录下所有文件的hash。访问文件的方式:
  • 可以通过目录hash/filename访问
  • 也可以通过hashcode直接访问

如果修改目录下的内容,则需要持续更改IPFS目录的hash。我们可以用IPNS进行解决统一目录访问的问题。
其可以允许我们的节点的域名空间引用一个IPFS hash,也就是说我们可以通过节点ID对项目根目录的IPFS HASH进行绑定,以后我们访问内容站点时直接通过节点·ID访问即可,当我们更新内容时,重新发布到IPNS`即可。

  • ipfs name publish targePath
    * 验证:ipfs name resolve id
    * 通过IPNS进行访问:ipfs.io/ipns/id

进阶

  1. 添加文件
    使用-w filename,添加的文件会返回两行
[root@VM_0_12_centos ipfs_test]# echo "hello1" | ipfs add -w 
added QmUgAgTVxq7UeY3Tbumz72fBsSvkUnveEgEkWvVquEvJVV QmUgAgTVxq7UeY3Tbumz72fBsSvkUnveEgEkWvVquEvJVVadded
QmYPQAaaw5mVxwT8iZ1wc7d6k5hD7cHhqCyQH81toPK7Rs

结果的第一行就是添加文件的hash,第二行就是包装这个文件的一个目录的hash。
-w指令的航意就是让ipfs创建一个文件的内容以及包裹文件内容的目录(含有这个文件)。
ipfs ls hash可以看到指定的hash的目录和文件信息,添加-v参数可以将头部信息进行打印。
其本质上就是列出这个目录(hash)关联的所有文件。
Tips 有人会疑惑:“那不是一个目录就一个文件?”。其实我们在添加文件的时候,可以用空格进行分割,同时添加多个文件。这样就能够在一个directory下有很多的文件了。同时我们可以在add的时候使用-r,同时在该目录下创建多级目录。这样我们就能够添加一个多层级的目录结构。而且目录有hash,文件有hash。例如:

[root@VM_0_12_centos ipfs_test]# ipfs add -wr file2.txt file1.txt test
added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN file1.txt
added QmQTJqBR6pXws7ustXUexbs1S49qzXR47DbwRHLkB3qJPe file2.txt
added Qmair6VNFLJMAH69E5TJBei3NNiJRWPnxXo3BA31j7oXf9 test/file1.txt
added QmWANm4FeobTEHg5P2pwwiraPJktZi7ikb75H62gXshqFj test/file2.txt
added Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V test
added QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7

[root@VM_0_12_centos ipfs_test]# ipfs ls -v QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7
Hash                                           Size Name
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 14   file1.txt
QmQTJqBR6pXws7ustXUexbs1S49qzXR47DbwRHLkB3qJPe 18   file2.txt
Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V 160  test/

[root@VM_0_12_centos ipfs_test]# ipfs ls -v Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V
Hash                                           Size Name
Qmair6VNFLJMAH69E5TJBei3NNiJRWPnxXo3BA31j7oXf9 23   file1.txt
QmWANm4FeobTEHg5P2pwwiraPJktZi7ikb75H62gXshqFj 31   file2.txt

这里要注意的ifps catipfs ls,前者访问针对文件,后者访问针对目录。
不过可以通过路径与文件名的形式访问文件。例如:

[root@VM_0_12_centos ipfs_test]# ipfs cat QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7/file1.txt
hello
[root@VM_0_12_centos ipfs_test]# ipfs cat QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7/test
Error: this dag node is a directory
[root@VM_0_12_centos ipfs_test]# ipfs cat QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7/test/file1.txt
hell,,,,asdfas
[root@VM_0_12_centos ipfs_test]# ipfs cat QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7/Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V/file1.txt
Error: no link named "Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V" under QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7
[root@VM_0_12_centos ipfs_test]# ipfs cat Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V/file1.txt
hell,,,,asdfas

这里做了一些测试:

  • 一级目录hash/filename可以获取文件
  • 一级目录hash/二级目录名称无法获取
  • 一级目录hash/二级目录名称/二级目录文件可以获取文件
  • 一级目录hash/二级目录hash/二级目录文件无法获取,因为目录hash本身没有层级关系(他被看做是一个文件名)。

同时,如果添加不同的文件名,但是内容相同的文件呢?

[root@VM_0_12_centos ipfs_test]# cat file1.txt > file3.txt
[root@VM_0_12_centos ipfs_test]# ipfs add file1.txt
added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN file1.txt
[root@VM_0_12_centos ipfs_test]# ipfs add file3.txt
added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN file3.txt

我们可以看到ipfs并不关心文件名,只关心内容。如果加上-w呢?

[root@VM_0_12_centos ipfs_test]# ipfs add -w file1.txt                          added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN file1.txt
added QmUs71TZY6Vy47vYrgu5baJwfGQNpMQKeHE2eAn3k2r5kv
[root@VM_0_12_centos ipfs_test]# ipfs add -w file3.txt
added QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH file3.txt
added QmXc7dSBQGCxPuB8pSVtKpGvqTB7afv9KB1zGNCzCH2rhA

我们看到,如果添加了索引目录的话,ipfs就会将其视为两个文件。并且分配不同的hash。但是具体存储的时候是否存了两份?这个我们等到源码分析的时候再看。

参考链接

相关文章

  • IPFS 学习笔记(三)IPFS初探-基本操作

    下载与安装 一般有三种安装方式:go-ipfs 直接在此下载二进制文件并移入/usr/local/bin/中; 使...

  • 以太坊部署智能合约简单示例

    继上次学习了一些基本的IPFS操作命令之后,在IPFS网络创建应用已经变得可行。本文主要学习通过truffle来创...

  • 使用IPFS构建网站

    一、安装IPFS并开启本地节点 参考之前文章《【IPFS学习笔记】大数据搬上区块链—Ubuntu部署IPFS实践》...

  • ipfs的基本操作

    1 添加一个文件到ipfs 基本命令: 添加文件:ipfs add 查看文件:ipfs ca...

  • 2019-01-25

    《IPFS官方周报26期》: IPFS官方周报26期:IPFS上传速度提升50%!第三方客户端发布 原创:IPFS...

  • 文档计划 | 安装IPFS

    安装 GO IPFS 我们建议通过安装包的方式对IPFS进行安装:下载适合你操作系统的IPFS安装包 索引 通过安...

  • 谁说IPFS离你还遥远?看看IPFS的这些应用!

    谁说IPFS离你还遥远? 看看这些IPFS之上的可操作应用! 别再傻愣傻愣的认为IPFS跟自己没关系~ 用铁证告诉...

  • 什么是IPFS?(下)

    在《什么是IPFS?(上)》中,我们介绍介绍了IPFS的基本概念, 那么IPFS都可以用来做什么? 如果你认为仅仅...

  • IPFS原理初探

    什么是IPFS IPFS(InterPlanetary File System 星际文件系统) 是一个旨在创建持久...

  • IPFS操作

    1.下载ipfs http://127.0.0.1:8080/ipns/dist.ipfs.io/#go-ipfs...

网友评论

      本文标题:IPFS 学习笔记(三)IPFS初探-基本操作

      本文链接:https://www.haomeiwen.com/subject/laqsjftx.html