Small Changes in Large Files

It appears that when you use Insync to synchronize a large file, then make a small change to that file, Insync re-uploads the entire file. Other syncronization services such as Dropbox, BTSync, SyncThing, etc. only transfer differneces in files to limit the amount of bandwidth needed to keep the files in sync. If there is any way possible that Google’s APIs will allow you to only synchronize the blocks of data that were changed within a file, Insync desperately needs this. Uploading to Google Drive is extremely slow regardless of how fast your Internet connection is. Unlimited space and up to 5TB individual file size limit makes Google Drive a potentially attractive place to store an offsite backup of my data, and to keep my data synchronized between different computers. Insync, with it’s cross platform support seemed a miracle at first - I might actually be able to use Google Drive for this. But my data includes video editing projects and virtual machine files. Making a small change in a VM results in a ton of data having to be uploaded again, 99% of which was just uploaded recently. If I can only use Google Drive for small working files and have to use something else for my other data, I’ll just use the something else for everything. I undestand that you are limited to what Google’s API’s give you the tools to do. Is it possible to to only update changed portions of a file in Google Drive? If so, please consider adding this functionality to Insync!

1 Like

Unfortunately, delta sync is not possible since it’s not avail via the Google Drive API.

Having said that, it’s still technically possible to do (and it’s been discussed internally) but the downside is that said large file will no longer be viewable on Google Drive web (i.e. it would have to be broken up and stored as broken up files) to take advantage of delta syncing.

Is this something you would still want even if said files aren’t web viewable?

If I could selectively choose which files to break up into blocks, yes. Most of my files are encrypted and are not viewable in Google Drive web interface anyway. I specifically choose which files to upload unencrypted if I want to be able to view them in a browser. I use encfs, so I have many files with jibberish names. I would want to be able to select the folder that contains all of these files (the root of the encfs folder) and have it only upload deltas. Everything outside of that folder structure should be viewable in the browser interface of Drive. For people who use encryption containers such as TrueCrypt, being able to select the container for delta-only synchronization would be great. Without that, using a container-based encryption technology would be impossible. Another possibility might be to let the user select a file size limit, above which the file would be split up. I wouldn’t want to try to open a huge file in the browser anyway. Files smaller than that limit would be kept whole. I would very much like to see such a feature. I recognize the size of the challenge, and I’m sure you have other aspects of the development of your product that you would rather focus your effort on. The effort required would clearly be substantial, and I probably represent a (very?) small portion of your user base. If you do decide to move forward with implementing such a feature, please post that news here or on the blog. I would be excited for it. Thanks for considering it.

@Rhea64 thanks for your feedback. Will repost here when we have something.

Sure, the delta upload feature would be great.
As for “it cannot be viewed in the web then”: wouldnt hurt too much, as its highly unlikely that a (power) user would get the file via the browser instead of an app or the client itself. Therefore it would be okay (for me).

Any other thoughts?

@Rhea64 @terpua

I want this feature! A couple ways this could be implemented:

  • Allow users to specify a mask for a particular file type and size that will ALWAYS be synced via delta sync.
  • Allow users to specify a single file that will be synced using delta sync.

Another thought: is it possible to use Google’s realtime API for this purpose for small files?

Another another thought: what about using an already existing tool to accomplish this purpose? Ie, https://github.com/google/skicka/issues/60