ipfs入门安装与使用

一、下载安装

首先去官网下载go-ipfs包。笔者用的是ubuntu系统,下的是linux amd64版本的。

tar xvfz go-ipfs.tar.gz
cd go-ipfs
./install.sh

二、使用

1、初始化ipfs

$ ipfs init
initializing IPFS node at /home/ubuntu/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmapfGyBKDrz77LxHcxDZbQ8DeNZtYACVgPkLv8y2g6U5a
to get started, enter:

	ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

查看ipfs的readme,该readme默认被添加ipfs

$ ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme
Hello and Welcome to IPFS!

██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗  ███████╗
██║██╔═══╝ ██╔══╝  ╚════██║
██║██║     ██║     ███████║
╚═╝╚═╝     ╚═╝     ╚══════╝

If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!

 -------------------------------------------------------
| Warning:                                              |
|   This is alpha software. Use at your own discretion! |
|   Much is missing or lacking polish. There are bugs.  |
|   Not yet secure. Read the security notes for more.   |
 -------------------------------------------------------

Check out some of the other files in this directory:

  ./about
  ./help
  ./quick-start     <-- usage examples
  ./readme          <-- this file
  ./security-notes

2、添加和查找内容

将字符串添加到ipfs
$ echo "ipfs test data" | ipfs add
added QmdnqtJeDP6eq6cM8Vn7zp1fxmnUuFUzPoX3WyiaixcaeY QmdnqtJeDP6eq6cM8Vn7zp1fxmnUuFUzPoX3WyiaixcaeY
 15 B / ? [------------------------------------------------------------------------------------------------------------------=--------------]

通过字符串hash,查找添加的内容

$ ipfs cat QmdnqtJeDP6eq6cM8Vn7zp1fxmnUuFUzPoX3WyiaixcaeY
ipfs test data

将文件添加到ipfs
(1)创建文件夹和文件
mkdir -p foo/bar
cd foo/bar
echo "hello ipfs" > baz
(2)将文件夹添加到ipfs
$ ipfs add -r foo
added QmSoASxb8aNVGk3pNWpZvXEZTQKxjGeu9bvpYHuo5bP1VJ foo/bar/baz
added QmNqnuDQVvRchoyAJx93CyA68mH5xAehAHGv3gR5kh6G2p foo/bar
added QmY76eBuKrAwhXUdDsupYDoYpdmXW1pSjnwg2KpdMyTJVq foo
 11 B / 11 B [=======================================================================================================================] 100.00%
(3)通过文件hash查找文件
$ ipfs cat /ipfs/QmY76eBuKrAwhXUdDsupYDoYpdmXW1pSjnwg2KpdMyTJVq/bar/baz
hello ipfs
$ ipfs cat /ipfs/QmNqnuDQVvRchoyAJx93CyA68mH5xAehAHGv3gR5kh6G2p/baz
hello ipfs
$ ipfs cat /ipfs/QmSoASxb8aNVGk3pNWpZvXEZTQKxjGeu9bvpYHuo5bP1VJ
hello ipfs

ipfs的数据通过Merkel DAG(默克尔有向无环图)来管理,图中一个节点就是一个object,图中的每个节点都可以存储数据(这个和Merkel Tree只在叶子节点存放数据不同)或链接其它的obejcts,因此可以通过object和dag查看文件或者文件夹数据。

(3)查找object
$ ipfs object get QmY76eBuKrAwhXUdDsupYDoYpdmXW1pSjnwg2KpdMyTJVq
{"Links":[{"Name":"bar","Hash":"QmNqnuDQVvRchoyAJx93CyA68mH5xAehAHGv3gR5kh6G2p","Size":68}],"Data":"\u0008\u0001"}

获取存储foo的object,可以看到链接(Link)到foo目录的bar。

$ ipfs object get QmNqnuDQVvRchoyAJx93CyA68mH5xAehAHGv3gR5kh6G2p
{"Links":[{"Name":"baz","Hash":"QmSoASxb8aNVGk3pNWpZvXEZTQKxjGeu9bvpYHuo5bP1VJ","Size":19}],"Data":"\u0008\u0001"}

获取存储bar的object,可以看到链接(Link)到bar目录的baz。

$ ipfs object get QmSoASxb8aNVGk3pNWpZvXEZTQKxjGeu9bvpYHuo5bP1VJ
{"Links":[],"Data":"\u0008\u0002\u0012\u000bhello ipfs\n\u0018\u000b"}

获取存储baz的object,可以看到baz的文件内容"hello ipfs"。

(4)通过dag查找数据

通过dag查找文件也是类似的:

$ ipfs dag get QmY76eBuKrAwhXUdDsupYDoYpdmXW1pSjnwg2KpdMyTJVq
{"data":"CAE=","links":[{"Name":"bar","Size":68,"Cid":{"/":"QmNqnuDQVvRchoyAJx93CyA68mH5xAehAHGv3gR5kh6G2p"}}]}
$ ipfs dag get QmNqnuDQVvRchoyAJx93CyA68mH5xAehAHGv3gR5kh6G2p
{"data":"CAE=","links":[{"Name":"baz","Size":19,"Cid":{"/":"QmSoASxb8aNVGk3pNWpZvXEZTQKxjGeu9bvpYHuo5bP1VJ"}}]}
$ ipfs dag get QmSoASxb8aNVGk3pNWpZvXEZTQKxjGeu9bvpYHuo5bP1VJ
{"data":"CAISC2hlbGxvIGlwZnMKGAs=","links":[]}
5、域名

从上面的示例可以看到一个文件添加后可以通过hash来访问,但在baz文件每次变化后foo的hash都会发生变化,这样访问这个文件的URL也要变。
ipfs采用ipns了解决这个问题,ipns就是应用在ipfs中的dns。

$ ipfs name publish QmY76eBuKrAwhXUdDsupYDoYpdmXW1pSjnwg2KpdMyTJVq --allow-offline
Published to QmapfGyBKDrz77LxHcxDZbQ8DeNZtYACVgPkLv8y2g6U5a: /ipfs/QmY76eBuKrAwhXUdDsupYDoYpdmXW1pSjnwg2KpdMyTJVq
$ ipfs cat /ipns/QmapfGyBKDrz77LxHcxDZbQ8DeNZtYACVgPkLv8y2g6U5a/bar/baz
hello ipfs

QmapfGyBKDrz77LxHcxDZbQ8DeNZtYACVgPkLv8y2g6U5a是NodeID,这个ID是不会变化的。如果需要修改baz文件的内容,只需要add后publish,用原来的URL就可查看到修改后的内容。

$ echo "hello ipfs world" > foo/bar/baz
$ ipfs add -r foo
added QmT6EWWciJiqM4WBp37oHQF7g2ec1qQH38HWre9r1AnS5Q foo/bar/baz
added QmYnEJeoec4zrBEoxT7CJtVpGJ7e9LJ9C275H9dMuE61sT foo/bar
added QmTQec9f73shhRkM6n9pqFLRPxgb9mfRR4EM499iifA9jT foo
 17 B / 17 B [=======================================================================================================================] 100.00%
$ ipfs name publish QmTQec9f73shhRkM6n9pqFLRPxgb9mfRR4EM499iifA9jT --allow-offline
Published to QmapfGyBKDrz77LxHcxDZbQ8DeNZtYACVgPkLv8y2g6U5a: /ipfs/QmTQec9f73shhRkM6n9pqFLRPxgb9mfRR4EM499iifA9jT
$ ipfs cat /ipns/QmapfGyBKDrz77LxHcxDZbQ8DeNZtYACVgPkLv8y2g6U5a/bar/baz
hello ipfs world
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值