On 19/05/2012 1:38 a.m., Klaas Freitag wrote:
I understand the concept and indeed its good. It's very near to what I want to implement, with the only difference that instead of the hash sums, I'd like to use the mtimes, as csync does. Why do we think thats a benefit: Well, based on the mtimes its decideable which version is newer. Moreover, the mtime is already a natural meta data in each file system, so we do not have to add something new. That given, csync runs without server support by now.
My experience agrees with Evert, basing sync decisions on the relative value of dates can result in files being incorrectly overwritten.

What is missing is the propagation of the mtimes from individual files and directories to their parent directory. If we do that with the ownCloud server support, I think we will have the same benefits that you described above. As we have the data in a database server side we will be able to retrieve the data fast.
If you're updating parent directories anyway calculating directory hashes is trivial. Providing that information to the client can make the client much more efficient.


Note that there is a related RFC - http://tools.ietf.org/html/rfc6578 -
however I'm not confident that the approach outlined there is quite right.
Do you know if its implemented in a WebDAV server already?
This standard seems to have emerged from some corporaty types, so there's probably something from ibm or oracle

Of course finding what files are new or updated is one thing,
communicating those changes efficiently is another. Spliffy uses a
similar approach to Bup (https://github.com/apenwarr/bup) to split files
into blobs which are stable with respect to file changes. Only changed
blobs are transmitted.

The hashsplitting algorithm is **very** simple, and if you're not doing
something like this yet i suggest you take a peek -
https://github.com/HashSplit4J/hashsplit-lib
Thats cool and is a problem we also still have on our list to tackle.
I stumbled over this already and wonder if there is a C or C++ lib for that.
its really easy. I knocked it up in java in about an hour while watching telly, albeit with a couple of major simplifications over Bup. Bup has an arbitrary depth of "fanouts" (ie groups of hashes) but its much simpler and perfectly practical to have a fixed depth of - root -> fanout -> crc.

Sorry for the long post, and I hope this is of some assistance.
Great, I really appreciate your input.
You're welcome!
_______________________________________________
Owncloud mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/owncloud

Reply via email to