~/.ipfsフォルダを外付けドライブにマウントできますか?

~/.ipfsフォルダを外付けドライブにマウントできますか?

この質問はIPFS(https://ipfs.io)。

~/.ipfsフォルダを外部デバイス(ハードドライブ、ネットワークドライブ、WD My bookなど)にマウントできますか?これは~/.ipfs、異なるノード間でフォルダを共有するのに役立ちます。 IPFSがノード間でファイルシステムを共有するように設計されている(同時に?)わかりません。

WD My book外付けハードドライブ(https://www.wdc.com/products/wd-recertified/my-book.html、ファイルシステムNTFS)。マイインストールコード行を参照してください。

    $ mkdir /mnt/cifs
    $ sudo mount -t cifs //server-name/share-name /mnt/cifs -o \
                                    username=admin,password=my_password,uid=1000    
    $ mount | grep 'cifs’
    //server-name/share-name on /mnt/cifs type cifs (rw)

フォルダをインストールした後に~/.ipfs実行しようとすると、ipfs init次のipfs add <filename>エラーが発生します。

Error: fsync: invalid argument

:をipfs add <filename>実行すると、次のように作成されたフォルダ内にブロックファイルが作成されます ~/.ipfs/blocks/<created_folder_name>

~/.ipfs/blocks$ ls
CIQA2  CIQBE  CIQCP  CIQDV  CIQF7  CIQGF  CIQHL  CIQIY  CIQK5  CIQLB  CIQMG  CIQNM  CIQOR
CIQA3  CIQBF  CIQCQ  CIQDW  CIQFA  CIQGG  CIQHM  CIQIZ  CIQK6  CIQLC  CIQMH  CIQNN  CIQOS
CIQA4  CIQBG  CIQCR  CIQDX  CIQFB  CIQGH  CIQHN  CIQJ2  CIQK7  CIQLD  CIQMI  CIQNO  CIQOU

たとえば、ipfs init実行後、作成された各フォルダには1つのファイルしか作成されません。

$ ~/.ipfs/blocks$ ls */
/home/.ipfs/blocks/CIQMJ:
CIQMJCAMEI4UXBQ35CUDVVJOGU3DNWNHI7O7JCWHWNMUWPGKPOTLFYY.data //coming from mounted device.

/home/.ipfs/blocks/CIQMK:
CIQMKGZXBKZV262ZN6ABE4SUO5BNGKVSPTGAQXSOC35UUK7FUPIIAIY.data //coming from mounted device.

また、ipfs add <filename>実行後にファイルを含む新しいフォルダが作成されます。フォルダを外部デバイスにマウントしましたが、エラーが修正されました。

ここに画像の説明を入力してください。

ただし、ipfs add <filename>〜/ .ipfs / blocks =>の下にすでに作成されているフォルダに新しいブロックファイルを追加すると、同じエラーが発生しますError: fsync: invalid argument

/home/.ipfs/blocks/CIQMI:
CIQMI5TLEXEWEYC3G3WELU6ONMKNLAF6CZUXU5BTWEU453LHPTUNNEI.data //coming from mounted device.
CIQMIRQGFPT23SZ6XYFFU45GLZENEWRYI7PR3YJ7EP7ZC6I4ME7GPFQ.data //newly added file

私が書いたテストスクリプト:

次のスクリプトは一度だけ実行した後に実行されますipfs init

$ sudo mount -t cifs //server-name/share-name /mnt/cifs -o username=admin,password=my_password,uid=1000
$ ipfs init
$ cd ~/.ipfs/blocks/
for d in */ ; do
   if [ ! -d /mnt/cifs/$d ]; then
        mkdir /mnt/cifs/$d
        cp $d/* /mnt/cifs/$d/
   fi
done

実行する前に外部デバイスからファイルを復元するには、次の手順を実行します。ipfs add <filename>: これから ~/.ipfs/blocks/ 内のすべてのフォルダが実際に外部デバイスにマウントされました。

sudo mount -t cifs //<ip_address>/mybloc/ ~/.ipfs/blocks/ -o username=admin,password=my_password,uid=1000

貴重な助けと時間をいただきありがとうございます。

答え1

私が直面した問題を解決できると思います。ipfs init実行後、それぞれが一意のフォルダ名を持つ15個の新しいファイルが作成されます。このファイルは削除しないでください(このファイルにはMerkleツリーのルートが含まれているとします)。私はsudo chattr +i */*それらを不変にするために以下を使用します。

~/.ipfs/blocks$ ls
CIQBE  CIQCC  CIQDT  CIQFF  CIQGC  CIQJ2  CIQJB  CIQJX  CIQKZ  CIQOA  CIQOL
CIQBG  CIQD4  CIQF2  CIQFT  CIQIF  CIQJA  CIQJF  CIQKK  CIQO2  CIQOH
~/.ipfs/blocks$ ls *
CIQBE:
CIQBED3K6YA5I3QQWLJOCHWXDRK5EXZQILBCKAPEDUJENZ5B5HJ5R3A.data

CIQBG:
CIQBGFIS77LXFM54VZKTDSZ3VKRE6ITTNAQEFHMC2H3ESKBPC3BVCYA.data
...

実行する前に追加のipfs add <file_name>手順を実行する必要がありますsudo umount ~/.ipfs/blocks/。これは、実行直後に作成されたファイルとフォルダipfsのみが存在すると考えられます。ipfs init(私の〜/ .ipfs / blocksフォルダには、ipfs init実行直後に作成されたフォルダとファイルのみを含める必要があります。)

再確認する必要がありますが、各*.dataファイル名は含まれる情報に関して一意であるため、<file>.dataすべてのファイル名は同じではありません。したがって、同じ.datファイルに上書きすることは問題になりません。

後で新しく作成したファイルとフォルダを外付けipfs add <filename>ドライブにコピーし、~/.ipfsフォルダから削除する必要があります。

何かをする前に、ipfs cat <hash-id>私たちは次のことをしなければなりません。

sudo mount -t cifs //<ip_address>/mybloc/ ~/.ipfs/blocks/ -o username=admin,password=my_password,uid=1000 

.dataこれにより、ipfsが外部ドライブに実際に存在する生成されたファイルにアクセスできるようになります。

関連情報