带你玩转区块链--IPFS/FileCoin-第二章-第四节【ipfs篇】--未完,持续更新中

       

一、什么是IPFS

1. 定义

星际文件系统IPFS(InterPlanetary File System)是一个面向全球的、点对点的分布式版本文件系统,目标是为了补充(甚至是取代)目前统治互联网的超文本传输协议(HTTP),将所有具有相同文件系统的计算设备连接在一起。使数据访问的速度更快、更安全、更健壮、更持久。由Juan Benet在2014年5月份发起

一句话概括:IPFS是一种点对点的超媒体文件存储、索引、交换协议。

2. 特点

  • 内容可寻址(区别于位置寻址): ==通过文件的哈希值进行索引==
  • 版本管理功能==(永远告别404,只要上传过,就一定会存在==):
  • 点对点超媒体(P2P)

3. 定位

下一代互联网技术,替代http

4. http存在的问题

  • 内容无法永久保存 404
  • 浪费资源
  • 效率低
  • 不安全

二、安装配置IPFS

1.点击https://dist.ipfs.io/#go-ipfs,访问下载对应版本。执行./install.sh

2.解压go-ipfs_v0.4.14_windows-amd64.zip到你的目录中,会生成一个go-ipfs的文件夹,

3此时可以通过执行ipfs version检查是否初始化成功

4.执行完 ipfs init,生成本机ID

5. 若需修改存储原则:

扫描二维码关注公众号,回复: 9602110 查看本文章

1.修改存储空间为10G,打开文件后,修改StorageMax字段:

vi .ipfs/config

2.修改存储位置

//修改.ipfs中的config文件
ipfs config edit

//修改Ipfs默认村粗位置,windows需要配置到环境变量中的用户变量中
export IPFS_PATH=/path/to/ipfsrepo


三、使用IPFS

1.启动服务

当前节点已经创建成功,但是尚未和ipfs系统联系起来,我们需要运行ipfs服务,将本地节点链接至ipfs网络。

ipfs daemon

若只想使用ipfs网络,不想和网络交互,则使用:

ipfs daemon --offline

在启动服务后,可以输入http://127.0.0.1:5001/webui查看本节点信息

2 添加文件数据(add)

add命令表示向ipfs网络添加数据,这里的数据包括文件或者文件夹,通过-r选项来控制

执行添加动作:

[duke ~/ethStudy/ipfsTest]$ ipfs add helloItcast.txt 
added QmPcaCGWxVkqwX2UxkS8i8RjXMhsfCYdrPb54vAArzd7Wd helloItcast.txt
[duke ~/ethStudy/ipfsTest]$

此时,该文件会被添加到本地ipfs节点中,且会返回一个唯一标识这个文件内容的哈希值。

注意,ipfs只根据文件内容进行识别存储,如果文件名字不同,但是内容相同,那么ipfs不会重复添加,且会返回上一个文件的

我们会发现,返回的哈希值和源文件是同一个。

3. 查看文件内容(cat)

ipfs提供cat参数来进行文件的读取,操作如下:

ipfs cat QmPcaCGWxVkqwX2UxkS8i8RjXMhsfCYdrPb54vAArzd7Wd

4. 添加文件夹(add -r)

ipfs相同文件内容上传的时候如果发现已经存在了,就不会重复上传

相同的文件会在不同的节点有多个备份,放在缓存中

该命令与添加文件相同, 只不过需要额外指定一个参数-r,即递归(recursive),操作如下:

[duke ~/ethStudy/ipfsTest]$ ipfs add -r testFolder/
added QmXuTGSdFrTHWbpNzjGTkPsAU6nzUMq6jH28mxNFA1Ymdx testFolder/animals.txt
added QmcyYJGUmYYWxK2DWPbGRcxL875ZRmCHyHcSkcyhNT7Jzd testFolder/cars.txt
added QmURkBHop38X7BxL1NTo57H96gvEBmjZ2DqfJRz8AjKtht testFolder
[duke ~/ethStudy/ipfsTest]$

可以看到,文件夹和里面的文件都生成了各自的哈希值,对于文件的查看,与上面的相同,

5. 查看文件夹内容(ls)

我们直接查看一下文件夹,指定该文件夹哈希值,效果如下:

[duke ~/ethStudy/ipfsTest]$ ipfs cat QmURkBHop38X7BxL1NTo57H96gvEBmjZ2DqfJRz8AjKtht
Error: this dag node is a directory

我们会发现有错误出现,这是因为对于文件夹不能使用cat命令,而应该使用ls命令,这个ls参数可以使得ipfs上的数据像unix的文件系统一样展示,重新测试一下:

[duke ~/ethStudy/ipfsTest]$ ipfs ls QmURkBHop38X7BxL1NTo57H96gvEBmjZ2DqfJRz8AjKtht
QmXuTGSdFrTHWbpNzjGTkPsAU6nzUMq6jH28mxNFA1Ymdx 26 animals.txt
QmcyYJGUmYYWxK2DWPbGRcxL875ZRmCHyHcSkcyhNT7Jzd 25 cars.txt

成功列出两个文件!

6. 下载数据(get)

使用get命令可以对系统上的数据进行下载,==get命令可以指定文件,也可以指定目录。==

  1. 直接指定哈希下载:
[duke ~/ethStudy/ipfsTest]$ ipfs  get QmXuTGSdFrTHWbpNzjGTkPsAU6nzUMq6jH28mxNFA1Ymdx
Saving file(s) to QmXuTGSdFrTHWbpNzjGTkPsAU6nzUMq6jH28mxNFA1Ymdx
 26 B / 26 B [==========================================================] 100.00% 0

此时成功下载QmXuTGSdFrTHWbpNzjGTkPsAU6nzUMq6jH28mxNFA1Ymdx所指定文件,且存储在与哈希同名文件中。

  1. 使用-o参数,自定义下载文件的名字为animals_get.txt,操作如下:
[duke ~/ethStudy/ipfsTest]$ ipfs  get QmXuTGSdFrTHWbpNzjGTkPsAU6nzUMq6jH28mxNFA1Ymdx -o animals_get.txt
Saving file(s) to animals_get.txt
 26 B / 26 B [=======================================================] 100.00% 0s
  1. 下载的同时进行压缩,可以使用-a-c参数指定

  2. -a : 压缩成.tar格式

  3. -C :压缩成.gz格式

==注,这两个参数可以与-o一起使用,也可以单独使用==

7. 查看被引用哈希(refs)

refs命令可以查看当前的哈希值被哪些哈希引用,其实就是ipfs ls 不显示文件名,只显示哈希

[duke ~/ethStudy/ipfsTest]$ ipfs refs QmNRQ4C8n7QGSpNzPPdrg6VmFUZDyKon1fQqa59hgjQmta 
QmXuTGSdFrTHWbpNzjGTkPsAU6nzUMq6jH28mxNFA1Ymdx
QmcyYJGUmYYWxK2DWPbGRcxL875ZRmCHyHcSkcyhNT7Jzd
发布了23 篇原创文章 · 获赞 0 · 访问量 5661

猜你喜欢

转载自blog.csdn.net/Laughing_G/article/details/104676738
今日推荐