When I install ipfs client, an unique peerID is generated for the installation. My question is that if I want to move the client to another PC and would like to retain the same peer id (and private key if there is any), is it possible to do so?
It might be possible to do this, but then you would never want to run both node instances at the same time. You would have two nodes on the network saying that they are the same, which defeats the purpose of the “unique peer id”. What do you have in mind? Why would you like to do this, move the client to another PC?
Not running 2 nodes at the same time. For example, my PC is upgraded and I would like to move the ipfs node from the old to new PC. Just like a new email client is installed but the email address to login remains the same.
My understanding of Peer ID is it is a kind of identify on IPFS and ownership of the files uploaded. If the peer id was changed, then the ownership of the files uploaded with that peer id will be lost.
I have never tried this. You could install ipfs on the new machine, but do not run ‘ipfs init’
Instead, copy over your .ipfs directory from old machine to new machine, to the correct location for your user on new machine. Then try ‘ipfs config show’, that should tell you if it worked. After that ‘ipfs daemon’ and you should be good to go.
And yes, you will be copying along the private key also when you copy over your .ipfs directory from old to new machine. It is found within the ‘config’ file as PrivKey. For security reasons, it is not shown when you run ‘ipfs config show’
There isn’t really an “owner” of files added to IPFS. There are providers, but the original provider isn’t given special consideration that I’m aware of.
There is a delete button on the ipfs file interface and I thought this button only exists for the peer who originally uploaded the file. But I may be wrong about the button.
No, this button exists for everyone and just delete the file from the local computer. Once a piece of data have been shared with someone, it is out of hand of the original provider, just like you can’t remotely delete a torrent file from other computers, even if you are the original uploader.
If the file blocks can be deleted by the peer who stores them, is the IPFS not dependable storage solution? What I mean is the file stored with IPFS may not be available when I like to retrieve it sometime late. According to my reading, there is no way I would know how many copies of my file has been stored by IPFS and where they are stored.
This page might answer your question: https://docs.ipfs.io/guides/concepts/pinning/
It’s possible for peers to have your file but not advertise themselves as providers. But for peers who are configured to provide content they have cached/pinned, you can see those peers using
ipfs dht findprovs <key>.
In the general case: you’re correct. You can’t force them to store things for you or stay online. But you can either make your content popular so that there always an online node having it in its cache, or pay someone directly to host you data (that is a “pinning service”, like Temporal or Pinata.cloud), or (soon) ask on a blockchain market who want you money to host you file.
That’s correct. You can estimate a probable lower bound by asking the DHT for some providers. When Filecoin is out, if you pay for storage, you will have an exact count of copies of your file hosted by the nodes you hired (thanks to crypto magic).