I have the requirement to sync files (documents mostly, sound bites, high quality images) between multiple PCs, Macs and Linux clients and servers.
The number of files is large and delta syncs would be required. I would like a file changed on anywhere to be replicated. Additionally offline access is required. Version Control would be exceptionally useful and graceful recovery from duplicates etc.
In short I'm looking for dropbox but not hosted, SaaS or any other 3rd party involvement. Live mesh from Microsoft (or what it's called this week) would be ideal but for again 3rd party.
I figure this must be out there with a webdav backend or such and I just haven't found the cleanest solution.
I'm looking for the best way to implement the above. Open Source tools preferred but not explicitly required.
Thanks all.
What you describe sounds like a very general solution, which might be impossible (e.g. you cannot have both offline access and completely avoid manual merging, e.g. for multimedia files).
In addition to the other solutions, you might want to look at Unison. It will sync multiple directory trees to keep them identical after changes (particularly offline changes). Unlike rsync, it will actually cope with changes in multiple copies. It will intelligently merge them if possible, or prompt if it detects conflicts.
I regularly use it to sync my desktop to mobile devices, and it works really well.
It does need to be run periodically however, it is not a continuous service.
the environment you are trying to create could fast become very messy. what if multiple copies of a binary file changed at the same time in different places? How are you going to merge those changes?
You probably want to implement a (distributed) network file system of some sort. Versioning could be done with an underlying file system snapshots.
I am not sure if WebDAV will give you easiness and I/O you are looking for, but it could be so. Other alternatives are NFS, OpenAFS and CIFS.
Use the popular rsync tool. It is multiplaform, mature and you'll get a lot of support.
Sounds like a job for Subversion to me, what w/ the version control requirement. Had you not said that, I'd have probably suggested either rsync or Unison, but neither of those is going to help you with version control.
You can get nice graphical clients for Windows and MacOS (see http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients for a long list of clients), and access via WebDAV is available.