pseudoyu

pseudoyu

Blockchain | Programming | Photography | Boyi
github
twitter
telegram
mastodon
bilibili
jike

IPFS 本地節點搭建(命令行)

前言#

上一篇《IPFS 分佈式文件儲存原理》對於 IPFS 系統的設計理念、功能、工作原理及 IPNS 做了詳細的介紹,那麼,如何在本地搭建一個 IPFS 節點呢?

本文在macOS 11.2.3系統上搭建了一個 IPFS 節點(命令行版本),並對文件上傳、下載、網絡同步、pinGCIPNS等進行了實際操作,以加深對 IPFS 工作原理的理解。

代碼實踐#

安裝#

wget https://dist.ipfs.io/go-ipfs/v0.8.0/go-ipfs_v0.8.0_darwin-amd64.tar.gz
tar -xvzf go-ipfs_v0.8.0_darwin-amd64.tar.gz
cd go-ipfs
./install.sh
ipfs --version

啟動#

# 啟動節點
ipfs init

# 上傳文件
ipfs add ipfs_init_readme.png

# 上傳文件並且只輸出哈希值
ipfs add -q ipfs_init_readme.png

# 上傳目錄
ipfs add -r [Dir]

# 查看文件
ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme
ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/quick-start

# 查看自己上傳的文件
ipfs cat QmaP3QS6ZfBoEaUJZ3ZfRKoBm3GGuhQSnUWtkVCNc8ZLTj

# 查看圖片並輸出到文件
ipfs cat QmfViXYw7GA296brLwid255ivDp1kmTiXJw1kmZVsg7DFH > ipfsTest.png

# 下載文件
ipfs get QmfViXYw7GA296brLwid255ivDp1kmTiXJw1kmZVsg7DFH -o ipfsTest.png

# 壓縮並下載文件
ipfs get QmfViXYw7GA296brLwid255ivDp1kmTiXJw1kmZVsg7DFH -Cao ipfsTest.png

ipfs_init_readme

開啟 / 加入服務#

# 查看當前節點信息
ipfs id

# 查看IPFS配置信息
ipfs config show

# 開啟節點伺服器
ipfs daemon

API 服務,默認在 5001 端口,可以通過 http://localhost:5001/webui 進行訪問

ipfs_webui

網關服務,默認在 8080 端口,在瀏覽器裡訪問文件需要借助於 IPFS 提供的網關服務,由瀏覽器先訪問到網關,網關去獲取 IPFS 網絡殺過了的文件。通過 http://localhost:8080/ipfs/[File Hash] 來訪問上傳到 IPFS 的文件

文件操作#

# 列出文件
ipfs files ls

# 創建目錄
ipfs files mkdir

# 刪除文件
ipfs files rm

# 拷貝文件
ipfs files cp [File Hash] /[Dest Dir]

# 移動文件
ipfs files mv [File Hash] /[Dest Dir]

# 狀態
ipfs files stat

# 讀取
ipfs files read

使用 IPNS 來解決文件更新問題#

# 使用IPNS發布內容以自動更新
ipfs name publish [File Hash]

# 查詢節點id指向的Hash
ipfs name resolve

# 有多個站點需要更新,可以新產生一個秘鑰對,使用新的key發布
ipfs key gen --type=rsa --size=2048 mykey
ipfs name publish --key=mykey  [File Hash]

Pinning#

當我們向 IPFS 網絡請求文件時,IPFS 會把內容先同步的本地提供服務,使用 Cache 機制處理文件以防止儲存空間不斷增長,如果文件一段時間未被使用則會被 “回收”,Pining 的作用就是確保文件在本地不被 “回收”。

# pin一個文件
ipfs pin add [File Hash]

# 查詢某一個Hash是否被pin
ipfs pin ls [File Hash]

# 刪除pin的狀態
ipfs pin rm -r [File Hash]

# GC操作
ipfs repo gc

總結#

本文主要在本地部署了 IPFS 文件系統並對基本操作進行了嘗試,基於macOS 11.2.3go-ipfs_v0.8.0_darwin-amd64版本,不同系統操作可能會因版本或依賴問題不一樣,如有錯漏,歡迎交流指正。

參考資料#

  1. IPFS 官網
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。