IPFS 分散式檔案系統 – 安裝及使用教學

/ 0 評 / 0

上一篇 IPFS 分散式檔案系統 介紹了 IPFS 基本概念和原理,這篇就來說介紹一下一些基本用法。

安裝

IPFS 的官方網站有詳細各個不同作業系統的介紹安裝方法。https://docs.ipfs.io/introduction/install/

這個教學就以 macOS Mojave 為例,從官方網站下載 IPFS 的 對應的安裝檔,檔案應該為 darwin Binary中的 amd64。

下載後,先解壓安裝檔,然後切換到目錄中,執行 ./install.sh 即可安裝成功。

測試一下: ifps help,有如下顯示就代表安裝成功,但未能開始使用,因為需要初始化。

初始化

為 ipfs 初始化本地節點: ipfs init

進行初始化後,將會產生一個目錄 ~/.ipfs  存放區塊檔,預設最大值是 10GB,查看 readme 檔案

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

如果能夠看到以下頁面,即代表 IPFS 已經完成安裝及初始化,接下來,就可以開始使用 IPFS。

另外,IPFS 亦提供了一個簡單的 WebUI 瀏覽器,可讓你查看 IPFS 節點狀態、本地檔案、網絡頻寬等等的訊息。只需輸入

ipfs daemon

成功啟動後,使用任何一個瀏覽器訪問:

http://127.0.0.1:5001/webui

加入單個檔案

接下來我們就加入試試第一個檔案吧,先在當前目錄建立一個純文本檔案 file1.txt,並輸入"Samson's Blog"。然後用

ipfs add file1.txt 加入 IPFS,加入成功後,會生成一組對應的 hash 值。

vi file1.txt

$ ipfs add file1.txt

QmWbRrj7GCnZotrv32Hnf8SaeosMu5K6sKRWxRu8uihgR4

這一串就是文件對應的 hash值,而且已經添加到 IPFS 網絡中(要確保有執行 ipfs daemon 啟動節點連結公網網絡),同步後就可以透過 

https://ipfs.io/ipfs/QmWbRrj7GCnZotrv32Hnf8SaeosMu5K6sKRWxRu8uihgR4

又或者使用

ipfs cat /ipfs/QmWbRrj7GCnZotrv32Hnf8SaeosMu5K6sKRWxRu8uihgR4

都訪問到這個文件。簡單吧?

加入整個目錄

加入目錄和檔案的命令其實一樣,只需要多加一個 -r 參數即可,即可以將整個目錄加入到 IPFS 節點中。同樣地,先建立一個文件夾 temp,接著在文件夾中隨意加入幾個純文本檔案 file2.txt, file3.txt, file4.txt

mkdir temp

cd temp

vi file2.txt

vi file3.txt

vi file4.txt

$ cd ..    #返回上一層目錄

$ ipfs add -r temp

這樣就可以把整個目錄下所有檔案都加入到 IPFS 節點上。而目錄的hash值則為

QmWfDVRiXpffLxYAS3zMynNk4wDrdGYGxLDd4Bouqq4Bi3

同樣地,同步後就可以透過 

https://ipfs.io/ipfs/QmWfDVRiXpffLxYAS3zMynNk4wDrdGYGxLDd4Bouqq4Bi3

訪問到在 ipfs 上該目錄的檔案了。

又或者使用以下命令分別取得目錄下的檔案,如此類推:

ipfs cat /ipfs/QmWfDVRiXpffLxYAS3zMynNk4wDrdGYGxLDd4Bouqq4Bi3/file2.txt

ipfs cat /ipfs/QmWfDVRiXpffLxYAS3zMynNk4wDrdGYGxLDd4Bouqq4Bi3/file3.txt

ipfs cat /ipfs/QmWfDVRiXpffLxYAS3zMynNk4wDrdGYGxLDd4Bouqq4Bi3/file4.txt

這裡有一點要特別注意的是,如果在這個目錄下新增或修改任何的內容,目錄的 hash 值亦會隨之改變。

看到嗎? temp 目錄的 hash值已經由 QmWfDVRiXpffLxYAS3zMynNk4wDrdGYGxLDd4Bouqq4Bi3 變為 QmRce5fkXnDV1K7kHDvQvAQMW2tVDi1SuhFjEPmZ29nqb8 了。

想一下,如果你將一個靜態網站放上 ipfs,以後有任何修改,將會影響目錄的 hash 值,從而影響正常訪問,那麼,要如何解決?這個時候 IPNS 就可以發揮它的作用了。

IPNS

IPNS 可以讓我們的節點域名空間建立一個相對應的 IPFS hash 值,簡單理解,就像傳統網站域名的動態DNS一樣, 為防止主機IP變化而無法訪問,所以用一個網址動態對應一個IP。而在IPFS,就是用一組固定的 hash值綁定 ipfs項目根目錄的 hash值,以防止目錄內容變化而影響訪問 hash 值地址,往後只需要用這組固定的 hash 值即可訪問到對應的目錄。

接著就用上面目錄的 hash值作示範:

ipfs name publish QmRce5fkXnDV1K7kHDvQvAQMW2tVDi1SuhFjEPmZ29nqb8   

#將目錄的hash值發佈到 IPFS,以取回固定的 hash值。

 

ipfs name resolve QmVGVfShD2St1ZHA5VZNvMkK3LLdCeoYGKrkKw238LX8Dh   

#驗證 hash值對應的目錄 hash 值。

簡單來說,就是一個 hash值的映射關係。

PIN

由於 IPFS 會自動做 Garbage Collection(垃圾回收),以防止本地檔案佔用太多空間,如果目錄是需要長期存在的,就需要使用 PIN 命令把目錄"PIN 釘"起來。

ipfs pin add -r /ipfs/QmRce5fkXnDV1K7kHDvQvAQMW2tVDi1SuhFjEPmZ29nqb8

要注意的是,只能 PIN 目錄,不能 PIN 單個檔案。

管理本地 ipfs 節點

要本地 ipfs 節點目錄下的內容,ipfs 提供了與 Unix 檔案系統相同的 files 命令參數 ls、rm、cp、mv,還有另外提供的 read、flush、stat、write、chcid等命令參數。

只需使用命令

ipfs files ls /     #列目錄。列出本地 ipfs 節點的目錄下所有檔案

ipfs files cp/ipfs/QmWfDVRiXpffLxYAS3zMynNk4wDrdGYGxLDd4Bouqq4Bi3/file2.txt /target/file5.txt    #複製遠端檔案至本地。將ipfs主網絡上的指定檔案複製到指定的本地ipfs節點的指定目錄下,並命名為 file5.txt

ipfs files read /target/file5.txt     #讀取本地檔案。讀取本地ipfs節點的指定檔案 file5.txt。

ipfs files rm /target/file5.txt     #刪除本地檔案。刪除本地ipfs節點的指定檔案 file5.txt。

ipfs files rm -r /target/     #刪除本地目錄。刪除本地ipfs節點的指定目錄 target。

大致上與 Unix 檔案系統與如此類推,非常容易理解,如果忘記了命令參數,不要緊,只需要 ipfs files help, 就可以查到各個參數的用法和解釋。

參考來源

https://github.com/miaoski/ipfs-tutorial

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *