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

下载与安装

一般有三种安装方式: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。但是具体存储的时候是否存了两份?这个我们等到源码分析的时候再看。

参考链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350