File storage, management, and replication Options?

First, I’ve never dealt with or even tried something like this. It’s completely new to me. So maybe what I’m asking is stupid, but googling has not really returned what I have in mind.

I’m looking for some suggestions about how one could have some type of service that will store and replicate files. Yes, options exist to manage and replicate physical files like images or documents, but that’s not quite what I have in mind. I’m not looking for document sharing that you can edit in place similar to google docs. It should also be Open Source and support Windows, Linux, and maybe Mac.

I want to be able to send some info about the file and the file/blob to a service, of some kind, and have the service return a unique id. I don’t really want to have to worry about what type of file it is as such. Meaning I shouldn’t have to do XYZ because it’s a doc or do ABC because it’s jpg. It should be stored in a generic way along with some data describing what the blob is. I then want to be able to retrieve a blob using the id at a later stage and have that blob and info replicated to other locations.

The idea is to have a Master Node that dictates to the Child nodes what to replicate and when. Child nodes should also be able to push new files up to Master, and then Master should push it back down to the other Child nodes.

Nice to have:
-Age limits that can be used to limit how much is replicated down to the child nodes. The master node will have everything, but the child nodes might not need everything and will only keep a copy of files/blobs that’s, for example, less than 6 months old OR was used within the last 6 months. If it does not meet the criteria, the Child node should not have it.
-If a child node does not have the file/blob, it should request it automatically from the Master Node over the network. I’m looking at using it over a VPN.
-Option to encrypt, maybe?

In my case, I want to use software to interact with this service. It won’t be something you as the user would really interact with directly. How the files are displayed/handled will be done in the software. The service just stores, replicates, and retrieves files/blobs.

Again, maybe this doesn’t make sense in which case I would love some feedback from those that knows more about this kind of thing.