IPFS命令
IPFS命令
1、查看通信ID信息
查看你的通信ID信息:ipfs id
[root@ipfs1 ~]# ipfs id
{
"ID": "QmPQ3b1DCz9Qvm127WGwreGGXib9bD9g7vJwYZPBnmM2ph",
"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5te4oXeeEhktWN7vrT5JoGYYB+jAWASzlGhzIUuIRevybpdRkBV0eGTIlFDJm9+WCZFDZaGuLfC2W1fzd6RMP/ZpXwiSmTLojIzfIVf3aXpRZeNxl464NXA796MIi0CwepnRBajQoGkB/fLhmoq6gij5SiWIUmwZ19/rJ9h0h8O3qQp3tX+N6PXKp+3EjbwUflLp6aq8Q4+PifOghhP7JU7ysPsrzEvKhnmupujUBkoLl4ZISNt3mL/JosFQiM1JIBhrJd6ZPunzuu6M75XztSKxUDw4kDwJyMBGmMMDD4/apaZyFWo66r4tKyCS+CuWTZ/6c5NKAFy7GwaXSUec7AgMBAAE=",
"Addresses": [ "/ip4/127.0.0.1/tcp/4001/p2p/QmPQ3b1DCz9Qvm127WGwreGGXib9bD9g7vJwYZPBnmM2ph", "/ip4/192.168.85.121/tcp/4001/p2p/QmPQ3b1DCz9Qvm127WGwreGGXib9bD9g7vJwYZPBnmM2ph",
"/ip6/::1/tcp/4001/p2p/QmPQ3b1DCz9Qvm127WGwreGGXib9bD9g7vJwYZPBnmM2ph",
"/ip4/127.0.0.1/udp/4001/quic/p2p/QmPQ3b1DCz9Qvm127WGwreGGXib9bD9g7vJwYZPBnmM2ph",
"/ip4/192.168.85.121/udp/4001/quic/p2p/QmPQ3b1DCz9Qvm127WGwreGGXib9bD9g7vJwYZPBnmM2ph",
"/ip6/::1/udp/4001/quic/p2p/QmPQ3b1DCz9Qvm127WGwreGGXib9bD9g7vJwYZPBnmM2ph"
],
"AgentVersion": "go-ipfs/0.6.0/",
"ProtocolVersion": "ipfs/0.1.0"
}
2、查看配置信息
输入ipfs config show,可以查看配置信息
export EDITOR=/usr/bin/vim
ipfs config edit - 在环境变量`$EDITOR`指定的编辑器中编辑配置文件
ipfs config replace <file> - 使用`<file>`指定的文件替代当前配置文件
ipfs config show - 显示当前配置文件的内容
[root@ipfs1 ~]# ipfs config show
{
"API": {
"HTTPHeaders": {
"Access-Control-Allow-Methods": [
"PUT",
"POST"
],
"Access-Control-Allow-Origin": [
"http://192.168.85.121:5001",
"http://127.0.0.1:5001",
"https://webui.ipfs.io"
]
}
},
"Addresses": {
"API": "/ip4/0.0.0.0/tcp/5001",
"Announce": [],
"Gateway": "/ip4/0.0.0.0/tcp/8080",
"NoAnnounce": [],
"Swarm": []
3、添加文件:
ipfs add <filename>
[root@ipfs1 go-ipfs]# ipfs add aa.txt
added QmQQT3P1mc24qFeQMC9cfRn6TJL3rC6A8YzdwhW9XvoZRQ aa.txt
53 B / 53 B [==================================================================================================] 100.00%[
4、查看文件:
ipfs cat <hash>
[root@ipfs1 go-ipfs]# ipfs cat QmQQT3P1mc24qFeQMC9cfRn6TJL3rC6A8YzdwhW9XvoZRQ
或者
[root@ipfs1 go-ipfs]# ipfs cat /ipfs/QmQQT3P1mc24qFeQMC9cfRn6TJL3rC6A8YzdwhW9XvoZRQ
hash: QmRqSJ8ckhFtTAx5pVNEMFxPC4JWWoThJbVTCAViWPX5Bf
5、下载文件
ipfs get <哈希值>
[root@ipfs1 go-ipfs]# ipfs get QmQQT3P1mc24qFeQMC9cfRn6TJL3rC6A8YzdwhW9XvoZRQ
Saving file(s) to QmQQT3P1mc24qFeQMC9cfRn6TJL3rC6A8YzdwhW9XvoZRQ
53 B / 53 B [===============================================================================================] 100.00% 0s
6、文件夹操作
[root@ipfs1 go-ipfs]# ipfs files --help
ipfs files cp <source> <dest> - 将文件拷贝到mfs中
ipfs files flush [<path>] - 将指定路径的数据刷新到磁盘
ipfs files ls [<path>] - 列表显示本地可变命名空间中的目录
ipfs files mkdir <path> - 创建目录
ipfs files mv <source> <dest> - 移动文件
ipfs files read <path> - 读取指定mfs中的文件
ipfs files rm <path>... - 删除指定文件
ipfs files stat <path> - 显示文件状态
ipfs files write <path> <data> - 写入指定文件系统中的可变文件
7、创建一个文件夹和查看文件:
[root@ipfs1 go-ipfs]# ipfs files mkdir /test
[root@ipfs1 go-ipfs]# ipfs files ls
1.json
2.json
test
8、ipfs上传整个目录
[root@ipfs1 go-ipfs]# mkdir test_content
[root@ipfs1 go-ipfs]# cd test_content
[root@ipfs1 test_content]# cat >file2.txt
12132
^C
[root@ipfs1 test_content]# cat >file1.txt
dsffsfds
^C
[root@ipfs1 test_content]# ll
总用量 8
-rw-r--r--. 1 root root 9 11月 28 11:59 file1.txt
-rw-r--r--. 1 root root 6 11月 28 11:59 file2.txt
[root@ipfs1 go-ipfs]# ipfs add -r test_content/
added Qmf7tj1ZbKobAvT54475ZLyo3szpu647w5v8npvimStfwm test_content/file1.txt
added QmW1sGk9yCuqj1biWCxbTwQMPaDep6hJKpuGmiGazrUQze test_content/file2.txt
added QmRf4pqzytgygZWwTftLxv17i5TYcBURwjjNbt3HvYe6TJ test_content
15 B / 15 B [=========================================================================] 100.00%
[root@ipfs1 go-ipfs]# ipfs ls QmRf4pqzytgygZWwTftLxv17i5TYcBURwjjNbt3HvYe6TJ
Qmf7tj1ZbKobAvT54475ZLyo3szpu647w5v8npvimStfwm 9 file1.txt
QmW1sGk9yCuqj1biWCxbTwQMPaDep6hJKpuGmiGazrUQze 6 file2.txt
9、查看连接到的对等结点:
ipfs swarm peers
10、ipfs pin 使用
ipfs pin 原理
每个文件块都有自己的 pin 状态,由 pin 管理器 Pinner 进行管理。
ipfs 在做 GC 等操作时,会根据每个文件块在 pin 状态,对其做出相应的处理。
文件块 的 5 种 Pin 状态
Recursive 状态
文件块树被递归添加到 pin 中,根文件块的状态是 Recursive,非根文件块的状态是 Indirect
Direct 状态
只有目标文件块添加到 pin 中, 子孙块不做处理,目标文件块的状态就是 Direct
Indirect 状态
文件块树被递归添加到 pin 中,根文件块的状态是 Recursive,非根文件块的状态是 Indirect
Internal 状态
ipfs 使用文件块来保存 pinner 状态,这些文件块的状态就是 Internal
NotPinned 状态
文件块没有被 pin,在 GC 时会被删除
列出所有的pin块
[root@ipfs1 local]# ipfs pin ls
QmRf4pqzytgygZWwTftLxv17i5TYcBURwjjNbt3HvYe6TJ recursive
QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn recursive
QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y indirect
Qmf7tj1ZbKobAvT54475ZLyo3szpu647w5v8npvimStfwm indirect
QmPZ9gcCEpqKTo6aq61g2nXGUhM4iCL3ewB6LDXZCtioEB indirect
QmQGiYLVAdSHJQKYFRTJZMG4BXBHqKperaZtyKGmCRLmsF indirect
QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc recursive
QmQQT3P1mc24qFeQMC9cfRn6TJL3rC6A8YzdwhW9XvoZRQ recursive
QmejvEPop4D7YUadeGqYWmZxHhLc4JBUCzJJHWMzdcMe2y indirect
QmQ5vhrL7uv6tuoN9KeVBwd4PwfQkXdVVmDLUZuTNxqgvm indirect
QmQy6xmJhrcC5QLboAcGFcAE1tC8CrwDVkrHdEYJkLscrQ indirect
QmU5k7ter3RdjZXu3sHghsga1UQtrztnQxmTL22nPnsu3g indirect
QmW1sGk9yCuqj1biWCxbTwQMPaDep6hJKpuGmiGazrUQze indirect
11、列出 pin 为指定状态的块
ipfs pin ls -t direct
ipfs pin ls -t indirect
ipfs pin ls -t recursive
12、增加
递归 pin
ipfs pin add QmZ98HahPRKRcfoYoJchZNKzFxSHFWw6WxvQc1hpFEoFca
直接 pin(只 pin 指定 hash 的文件块)
ipfs pin add --recursive=false QmZ98HahPRKRcfoYoJchZNKzFxSHFWw6WxvQc1hpFEoFca
13、移除
递归从 pin 中移除
ipfs pin rm QmZ98HahPRKRcfoYoJchZNKzFxSHFWw6WxvQc1hpFEoFca
直接从 pin 中移除
ipfs pin rm --recursive=false QmZ98HahPRKRcfoYoJchZNKzFxSHFWw6WxvQc1hpFEoFca
14、ipfs bootstrap – 管理启动引导节点
ipfs bootstrap
命令用来显示或编辑引导节点列表。
./ipfs-cluster-service daemon --bootstrap /ip4/192.168.85.121/tcp/9096/p2p/12D3KooWEXZufrecFd6CUHYgEAC9VmHX3WTqY72Qs7q6eYCrXNEr
ipfs bootstrap add [<peer>]... - 将一个或多个节点添加到引导列表
ipfs bootstrap list - 显示引导列表中的节点
ipfs bootstrap rm [<peer>]... - 从引导列表中删除一个或多个节点