<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 22, 2016 at 11:33 AM, Roeland Douma <span dir="ltr"><<a href="mailto:rullzer@owncloud.com" target="_blank">rullzer@owncloud.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>This is a bit of an oversimplification.<br>Just cutting up a file does not work. You need a rolling checksum. Else<br>you are going to be unable to detect moves within a file.<br><br><br>Assume a file.<br><br>'aaaaabbbbbccccc'<br><br>Now your chunks are 5 bytes. And you decide to modify the file locally to:<br><br>'adaaaabbbbbccccc'<br><br><br>Now if you would have 'static' chunks. This will force you to reupload all chunks.<br>Stuff like this is not uncommon.<br></div></blockquote><div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br>But this is indeed exactly what zsync is.<br><br><br>Basically you need to store the zsync file as meta data. Because calculating the checksum<br>on the server is not really a scaleable solution.<br></div></blockquote><div><br></div><div>What if the chechsum-chunk-calculation resulting file is also uploaded for the server, this way we don't need to use the server to calculate that at all.<br></div><div> don't know if the resulting file will be large as I didn't started doing that.<br><br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br>Long story short. Change detection is not only about changed chunks. It is <br>also about moved data (that did not change).<br><br>I agree that the blog series is a good place to start on how to design the API.<br><br>Cheers,<br>--Roeland<br><br><div><b>
From:
</b>
 
Klaas Freitag <<a href="mailto:freitag@owncloud.com" target="_blank">freitag@owncloud.com</a>>
<br>
<b>
To:
</b>
 
<<a href="mailto:devel@owncloud.org" target="_blank">devel@owncloud.org</a>>
<br>
<b>
Sent:
 
</b>
22-3-2016 15:16
<br>
<b>
Subject:
</b>
 
Re: [owncloud-devel] GSoC Proposal for Large File Sync
<br><div><div class="h5"><br><blockquote style="margin:0 0 0 .8ex;border-left:1px solid #ccc;padding-left:1ex">On 21.03.2016 23:58, Tomaz Canabrava wrote:
<br>>
<br>
<br>Hi,
<br>
<br>>
<br>> I can work on a proof of concept for large text files and virtual
<br>> machine images (wich would already be a win-situation for some users)
<br>> and then focus on *some* of the hard to sync files (like powerpoint
<br>> presentations) and see what I could get.
<br>>
<br>
<br>I do not think you should consider the file type at all. Just try to
<br>implement the zsync based approach I'd say, and just for the chunked 
<br>upload mode.
<br>
<br>Raw steps:
<br>1. on the client, chop the file in chunks and create a list:
<br>
<br>   Number of chunk     start-at-byte    end-of-byte   Checksum?
<br>
<br>2. send this list to the server to get the servers checksums
<br>3. While waiting on the server list of checksums, calc the client checksums
<br>4. compare the lists once the both are ready and decide which need upload
<br>5. upload the chunks that changed.
<br>
<br>The trick is in the cutting of the chunks. The amount of chunks that do 
<br>not change can be increased by picking clever boundaries.
<br>
<br>This project requires both client and server work.
<br>
<br>Please do the server work based on what is described in the blog series 
<br>about the new chunking API, there is a branch with basic implementation 
<br>of that here:
<br><a href="https://github.com/owncloud/core/pull/20118" target="_blank">https://github.com/owncloud/core/pull/20118</a>
<br>
<br>Makes sense?
<br>
<br>regards,
<br>
<br>Klaas
<br>>
<br>>
<br>
<br>
<br>_______________________________________________
<br>Devel mailing list
<br><a href="mailto:Devel@owncloud.org" target="_blank">Devel@owncloud.org</a>
<br><a href="http://mailman.owncloud.org/mailman/listinfo/devel" target="_blank">http://mailman.owncloud.org/mailman/listinfo/devel</a>
<br></blockquote></div></div></div></div><br>_______________________________________________<br>
Devel mailing list<br>
<a href="mailto:Devel@owncloud.org">Devel@owncloud.org</a><br>
<a href="http://mailman.owncloud.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://mailman.owncloud.org/mailman/listinfo/devel</a><br>
<br></blockquote></div><br></div></div>