ipfs pin和MFS有什么联系?

What is the connection between ipfs pin and MFS?

IPFS有两个概念,我不是很清楚它们之间的联系:IPFS pin和IPFS MFS。

据我了解,ipfs pin 允许您将内容保留在您的节点上,防止其被垃圾收集器自动删除。在这种情况下,如果我使用 ipfs add <file> 自己添加内容,那么它将自动固定,然后只能手动取消固定和删除。

IPFS 另一方面,MFS 允许像在文件系统中一样操作对象。例如,我可以使用 ipfs files cp <id> <name> 将特定的外部对象复制到 MFS。之后,我可以使用 ipfs files stat <name>.

找到它的 ID

问题是:

  1. MFS 中的文件是否受到保护,不会被垃圾收集器删除?
  2. 如果受到保护,那么为什么它们不显示在 ipfs pin ls 中?
  3. 如果我使用 ipfs add <file> 添加数据,然后使用 ipfs files cp <id> <name> 添加到 MFS,然后使用 ipfs pin rm <id> 取消固定,是否会保存数据?
  4. IPFS MFS 是一种更可靠的数据处理方式吗?

这些问题都很好!分别回答

  1. Are the files in MFS protected from being removed by garbage collector?

它们不是默认的 固定的。如果您希望 Pinner 跟踪这些文件,您还需要将它们固定下来。您可以执行 ipfs files stat /somePath,获取哈希,然后固定该哈希。

令人困惑的部分是 GC 将执行“最大努力”固定,其中由 MFS DAG 的根访问的文件也不会被 GC。

示例:

  • 您将文件添加到 MFS
  • 您在 MFS 上对该文件进行了修改
  • 以前的版本将被 GC 处理
  • 最新版本将免受 GC

如果想保护之前的,可以使用PinAPI。

  1. If protected, then why are they not displayed in ipfs pin ls?

如 1. 中的回答,您需要手动固定它们才能看到固定系统正在跟踪它。

  1. Will the data be saved if I add it using ipfs add <file>, then add it to MFS using ipfs files cp <id> <name>, and then unpin it using ipfs pin rm <id>?

也许你现在明白了要点。澄清一下:

  • 固定是对垃圾回收 (GC) 的一种保护。如果固定,GC 将不会删除它
  • MFS 不会自动固定文件。 GC 只是试图与 MFS 做朋友,而不是 MFS 根目录可以访问的 GC 文件。
  1. Is IPFS MFS a more reliable way to work with data?

这是一种更熟悉的方式,因为您可以使用常规目录结构和类似 API 的 Unix 来操作文件。它为您处理图形操作。