IPFS中有两个概念,我不太清楚它们之间的联系:IPFS pin和IPFS MFS。
据我了解,ipfs pin
允许您将内容保留在节点上,保护它不被垃圾收集器自动删除。在这种情况下,如果我自己使用ipfs add <file>
添加内容,那么它将自动固定,然后只能手动取消固定和删除。
另一方面,IPFS MFS允许像在文件系统中一样操作对象。例如,我可以使用ipfs files cp <id> <name>
将特定的外部对象复制到 MFS。之后,我可以使用ipfs files stat <name>
找到它的 ID。
问题是:
- MFS 中的文件是否受到垃圾回收器保护不被删除?
- 如果受到保护,那么为什么它们不显示在
ipfs pin ls
中? - 如果我使用
ipfs add <file>
添加数据,然后使用ipfs files cp <id> <name>
将其添加到 MFS,然后使用ipfs pin rm <id>
取消固定,是否会保存数据? - IPFS MFS是处理数据的更可靠方式吗?
这些非常好的问题!分别回答
- MFS 中的文件是否受到垃圾回收器保护不被删除?
默认情况下,它们不固定。如果您希望 Pinner 跟踪这些文件,您还需要固定这些文件。您可以执行ipfs files stat /somePath
,获取哈希,然后固定该哈希。
令人困惑的部分是GC将执行"尽力而为"固定,其中MFS DAG的根访问的文件也不会是GC。
例:
- 将文件添加到 MFS
- 在 MFS 上对该文件进行修改
- 以前的版本将获得GC处理
- 最新版本将受到GC保护
如果要保护以前的内容,可以使用 Pin API。
- 如果受到保护,那么为什么它们不显示在
ipfs pin ls
中?
如 1. 上的回答所示,您需要手动固定它们以查看固定系统正在跟踪它。
- 如果我使用
ipfs add <file>
添加数据,然后使用ipfs files cp <id> <name>
将其添加到 MFS 中,然后使用ipfs pin rm <id>
取消固定,是否会保存数据?
也许你现在已经明白了要点。澄清一下:
- 固定是对垃圾回收 (GC) 的保护。如果固定,GC 不会删除它
- MFS 不会自动固定文件。GC 只是尝试与 MFS 成为朋友,而不是可以通过 MFS 根访问的 GC 文件。
- IPFS MFS是处理数据的更可靠方式吗?
这是一种更熟悉的方式,因为您可以获得常规目录结构和类似 Unix 的 API 来对文件进行操作。它为您处理图形操作。