この質問は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が外部ドライブに実際に存在する生成されたファイルにアクセスできるようになります。