要将 IPFS repo 里的所有内容递归 pin,需要理解 IPFS 中 pin 的三种类型和 repo 的结构。以下是具体方法和注意事项:
IPFS 没有直接的"一键 pin 所有 repo 内容"命令,但可以通过脚本实现:
# 方法 1:获取所有本地块并尝试递归 pin
ipfs refs local | while read -r cid; do
ipfs pin add -r "$cid" 2>/dev/null
done
说明:
ipfs refs local 列出本地仓库的所有块/dev/null 以跳过已固定的块如果目标是批量 pin 大量内容(如迁移节点),推荐采用批量导入方式:
# 步骤 1:导出所有需要 pin 的 CID 列表
ipfs pin ls --type=recursive > cids.txt
# 步骤 2:清理文件,只保留 CID(删除后面的 "recursive" 字样)
sed -i 's/ recursive//' cids.txt
# 步骤 3:批量递归 pin
ipfs pin add -r < cids.txt
2>/dev/null 可忽略这些错误.ipfs 目录到新节点比逐个 pin 更高效# 查看所有递归 pin 的内容
ipfs pin ls --type=recursive
# 查看 pin 统计信息
ipfs pin verify
不建议 pin repo 中的所有内容,这会失去 GC 的意义。更合理的做法是:
ipfs pin add -r <CID>ipfs repo gc 清理不需要的缓存