After ipfs add <file> I don't see it in ipfs files ls

After issuing ipfs add <file> I can see that it’s being added:

ipfs add -w ~/Downloads/go-ipfs_v0.4.22_linux-amd64.tar.gz
added QmcB55KNpU1E8uvqFtFa9QTFWPTHnfSmC1N7Hg6c5qYYX9 go-ipfs_v0.4.22_linux-amd64.tar.gz
added QmUdpSaoczmMJk7KPXrrn22dGH8C2GSXjUWrqAywwVcAHU
 19.93 MiB / 19.93 MiB [===========================================================] 100.00%

but afterwards I cannot see it in either the webui or ipfs files ls

Why is that?

@pmalek ipfs files is the interface for MFS (Mutable File System). This is like having a unix filesystem view of IPFS content.

However, ipfs add does not put the content you add on MFS. In order to see it there you need to do something like ipfs files cp <Qmhash> / (if my memory is correct).

That’s correct. You can also just use ipfs files write with a path and pipe the content into it, to write it directly as a file.

Ok, so this worked.

ipfs files cp /ipfs/QmcB55KNpU1E8uvqFtFa9QTFWPTHnfSmC1N7Hg6c5qYYX9 /
ipfs files ls

but is there a way to list all the files add via ipfs add?

Unless you manually set --pin=false, they will be pinned, so you can do ipfs pin ls --type=recursive.

Yeah sure, you get the full list of added files as output after running ipfs add.

The question is: What do you want to achieve? :thinking:

I’m trying to figure out how this all works and this bit got me confused. Thanks in general. I’ll keep exploring and maybe reading some docs.

There’s basically two different types of ways to add data:

With ‘add’, then they just got pinned (by default).

And if you use ‘files write’ a mutable data structure will be added, which can be manipulated with other ‘files’ commands.

When you use ‘files cp’ to a previously added CID, you add the mutable data structure to it, and a corresponding file name in it.

Note that ‘mutable’ means, that changes can be done easily, and not that the CID won’t change, when you edit it.

If you link a CID of any kind or someone pins a CID, the data are guaranteed to never change.

So when you do an update on a file and want someone else to notice the change, you need an ipns entry. These ipns ids which can be updated to point to new CIDs.

The ipns entries are cryptographically signed by a private key, to avoid changes by peers which are not allowed to change them.

To make ipns entries human readable you can use regular DNS names, and add custom text fields - that’s called DNSLink.

Keep in mind that you currently cannot pin neither DNSLink entries nor ipns ids. So other people cannot ‘subscribe’ to changes you make.

To allow peers to subscribe to changes, you need to create an ipfs cluster, which can have follower peers which pull all changes you make on the ‘trusted nodes’ (nodes which can write to the cluster) in the cluster.

Hope this clears up a bit the current situation.

If you see any way to improve the documentation, feel free to create a pull request!

Best regards


1 Like