I'm thinking some daemon which walks the directory tree, giving the client back the full path to all files, with their MD5s (which the daemon could cache). Then the client also keeps a mapping of MD5 to files, so it can quickly move things around.
If the server deleted something, the client can move it to some 'local' directory with the same path as before. 'local' would still be indexed, but never deleted from.
Now, id3/ogg tags also change. So each file should really have two hashes: one for the entire file, and one for the music segment. I could just rsync again for that part, but since we know the region that changed, might as well just add that to the protocol too.
Before I write this, is there something out there already I can use?
I'm reluctant to use AFS/Coda/Intermezzo, but maybe?