That's what git-annex is for. Everyone has a list of all the files, and then if you want to access one, you can just do "git annex get [file]" and it'll get it from any of the machines that happen to have that file. If you want to delete it, "git annex drop [file]" will ensure at least N machines keep a copy of the file before deleting it.
I use it to manage files between my VPS, desktop, laptop and NAS, with each machine having a different subset of the whole pool, and it works great.