IPFS学習ノート(三)IPFS初探-基本操作

6693 ワード

ダウンロードとインストール
一般的に3つのインストール方法があります:go-ipfs
  • ここでバイナリファイルを直接ダウンロードし、/usr/local/bin/に移動します.
  • sudo snap install ipfs IPFS-snapインストール
  • を使用
  • ソースコードからのコンパイル--公式githubの方法--go getまたは直接downloadを使用してmake install
  • を行う
    ここでは、最初のバージョンを使用して、公式コンパイル後のバージョンをダウンロードし、インストールします.
  • は、圧縮パッケージを公式にダウンロードし、指定された場所に解凍します.https://dist.ipfs.io/#go-ipfs
  • mv ipfsから利用可能なbinディレクトリ(/usr/local/bin/ipfsまたは~/bin/ipfs)
  • へ.
    初歩的な使用-ipfsノードの作成&サービスの開始
  • は、ユーザのルートディレクトリに作成する.ipfs
  • ディレクトリの下でipfs initは、ローカルウェアハウスと同様のipfs nodeノードを初期化する
  • ipfs id:ノードプロパティの表示
  • にはノードid
  • があります
  • ノード構成の変更には
  • が必要である.
    export EDITOR=/usr/bin/subl  //        
    ipfs config edit
    
  • IPFSノードサーバの起動:ipfs daemon
  • 外部に露出してアクセスする必要がある場合は、ドメイン間リソース共有CORS構成
  • を構成する必要があります.
    ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'
    ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
    
  • サービスアクセスの検証
  • ipfs cat /ipfs/{nodeid}/readme
    
  • WebUI
  • の表示
    http://localhost:5001/webui
    
  • 関連コマンドの表示
  • ipfs —help
    

    アクセスにファイアウォールを遮断する必要があるかどうかに注意
    運用次元と使用:
  • file
  • を追加
  • ipfs add filenameファイルデータ
  • を追加
  • ipfs cat hash取得データ(ファイル)
  • でもまだ公式サイトに入っていないのでパスできませんhttp://ipfs.io/ipfs/hash を参照してください.これはipfsネットワークの公式ゲートウェイ-ファイルブラウザです.daemonが開いていない場合、追加は無効です.ipfs daemonを開き、fileを追加します.公式サイトでアクセスできます.(もちろん前提はあなたのdaemonが公式ゲートウェイと同じネットワークにいることです.あなたは知っています.この後の文章は関連します)
  • フォルダを追加すると、IPFSのルートディレクトリにフォルダを作成し、ファイルを移動できます.cpはhashを変更しません.しかしmvはhashのアドレスを変更します.ここでは、ipfsのファイルシステム(localファイルシステムのipfsルートディレクトリではない)でディレクトリを作成するだけです.このディレクトリの下にファイルを作成できます.
  • ipfs files mkdir/targetPath
  • ipfs files cp/ipfs/hashcode/targetPath/file.txt
  • ipfs files ls
  • ipfs files read filepath
  • ファイルipfs add -r pathを追加すると、ディレクトリhashとこのディレクトリの下のすべてのファイルのhashが生成されます.ファイルへのアクセス方法:
  • ディレクトリhash/filenameから
  • にアクセスできます.
  • は、hashcodeを介して
  • に直接アクセスすることもできる.
    ディレクトリの下の内容を変更する場合は、IPFSディレクトリのhashを変更し続ける必要があります.統合ディレクトリアクセスの問題をIPNSで解決できます.これにより、ノードのドメイン名空間にIPFS hashを参照することができます.つまり、プロジェクトルートディレクトリのIPFS HASHをノードIDでバインドすることができます.これからコンテンツサイトにアクセスするときは、ノード・IDで直接アクセスすればいいです.コンテンツを更新するときは、IPNS`に再発行すればいいです.
  • ipfs name publish targePath*検証:ipfs name resolve id*IPNSによるアクセス:ipfs.io/ipns/id

  • ステップアップ
  • 追加ファイル-w filenameを使用すると、追加されたファイルは2行
  • を返します.
    [root@VM_0_12_centos ipfs_test]# echo "hello1" | ipfs add -w 
    added QmUgAgTVxq7UeY3Tbumz72fBsSvkUnveEgEkWvVquEvJVV QmUgAgTVxq7UeY3Tbumz72fBsSvkUnveEgEkWvVquEvJVVadded
    QmYPQAaaw5mVxwT8iZ1wc7d6k5hD7cHhqCyQH81toPK7Rs
    

    結果の最初の行はファイルを追加するhashであり、2番目の行はこのファイルをパッケージするディレクトリのhashである.-w命令の航意は、ipfsにファイルの内容とファイルの内容を包むディレクトリ(このファイルを含む)を作成させることである.ipfs ls hashは指定されたhashのディレクトリとファイル情報を見ることができ、-vパラメータを追加してヘッダ情報を印刷することができる.本質的には、このディレクトリ(hash)に関連付けられたすべてのファイルがリストされます.Tips「それは1つのディレクトリに1つのファイルではないか」と疑問に思う人がいます.ファイルを追加するときは、スペースで分割しながら複数のファイルを追加することができます.これで1つのdirectoryの下に多くのファイルがあります.同時にaddの場合に-rを使用し、このディレクトリの下にマルチレベルディレクトリを作成することができます.これにより、マルチレベルのディレクトリ構造を追加できます.そしてディレクトリにはhashがあり、ファイルにはhashがあります.例:
    [root@VM_0_12_centos ipfs_test]# ipfs add -wr file2.txt file1.txt test
    added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN file1.txt
    added QmQTJqBR6pXws7ustXUexbs1S49qzXR47DbwRHLkB3qJPe file2.txt
    added Qmair6VNFLJMAH69E5TJBei3NNiJRWPnxXo3BA31j7oXf9 test/file1.txt
    added QmWANm4FeobTEHg5P2pwwiraPJktZi7ikb75H62gXshqFj test/file2.txt
    added Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V test
    added QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7
    
    [root@VM_0_12_centos ipfs_test]# ipfs ls -v QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7
    Hash                                           Size Name
    QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 14   file1.txt
    QmQTJqBR6pXws7ustXUexbs1S49qzXR47DbwRHLkB3qJPe 18   file2.txt
    Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V 160  test/
    
    [root@VM_0_12_centos ipfs_test]# ipfs ls -v Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V
    Hash                                           Size Name
    Qmair6VNFLJMAH69E5TJBei3NNiJRWPnxXo3BA31j7oXf9 23   file1.txt
    QmWANm4FeobTEHg5P2pwwiraPJktZi7ikb75H62gXshqFj 31   file2.txt
    
    

    ここで注意すべきifps catおよびipfs lsは、前者がファイルにアクセスし、後者がディレクトリにアクセスする.ただし、パスとファイル名の形式でファイルにアクセスできます.例:
    [root@VM_0_12_centos ipfs_test]# ipfs cat QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7/file1.txt
    hello
    [root@VM_0_12_centos ipfs_test]# ipfs cat QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7/test
    Error: this dag node is a directory
    [root@VM_0_12_centos ipfs_test]# ipfs cat QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7/test/file1.txt
    hell,,,,asdfas
    [root@VM_0_12_centos ipfs_test]# ipfs cat QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7/Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V/file1.txt
    Error: no link named "Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V" under QmWQqDLTsXwygeBQvxhY2d21RWiZiGbGS95S4qggSMDBy7
    [root@VM_0_12_centos ipfs_test]# ipfs cat Qmd5m5ZJ6yMpYt6UUooJAHv5SbckrAGkEzMcmKHvyH7p4V/file1.txt
    hell,,,,asdfas
    

    ここではいくつかのテストを行いました.
  • hash/filenameは、ファイル
  • を取得することができる.
  • hash/
  • を取得できません.
  • hash/ / は、ファイル
  • を取得することができる.
  • hash/ hash/ は、ディレクトリhash自体に階層関係がないため取得できません(ファイル名とみなされます).

  • また、異なるファイル名を追加しても、内容が同じファイルは?
    [root@VM_0_12_centos ipfs_test]# cat file1.txt > file3.txt
    [root@VM_0_12_centos ipfs_test]# ipfs add file1.txt
    added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN file1.txt
    [root@VM_0_12_centos ipfs_test]# ipfs add file3.txt
    added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN file3.txt
    

    ipfsはファイル名に関心を持たず、内容だけに関心を持っていることがわかります.-wを加えると?
    [root@VM_0_12_centos ipfs_test]# ipfs add -w file1.txt                          added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN file1.txt
    added QmUs71TZY6Vy47vYrgu5baJwfGQNpMQKeHE2eAn3k2r5kv
    [root@VM_0_12_centos ipfs_test]# ipfs add -w file3.txt
    added QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH file3.txt
    added QmXc7dSBQGCxPuB8pSVtKpGvqTB7afv9KB1zGNCzCH2rhA
    

    インデックスディレクトリを追加すると、ipfsは2つのファイルと見なします.そして異なるhashを割り当てる.しかし、具体的に保存するときは2部保存していますか?これはソース分析の時に見ます.
    リファレンスリンク
  • ipfs install
  • ipfs get start
  • ipfs API
  • ipfs Commands