With the vanilla Google Drive application and Insync, files are always reuploaded in their entirety when they change. This can be easily tested by doing the following:
- Place a file in a synced location that is perhaps 1MB or larger, such as an image or a music file
- Wait for the file to finish syncing
- Edit the file with a hex editor by changing a single byte to something different
- Watch the Progress tab of Insync as it syncs the entire file again
In day to day operation, this isn’t so bad for files like images and music. In my case, I use Google Drive as a backup location for various things. I have a 2GB encrypted virtual disk that I use for sensitive information like financial documents, etc. I originally just wanted to sync it to Google Drive and be done with it - quick, easy, and free. Because of how syncing works, though, this was unacceptable, so I turned to a separate paid solution that does diff-based syncing to a remote, encrypted location. This meets my needs, but if Insync had a diff-based sync I could solely rely on Insync for this.
I’m not really sure how you would want to do it, but if it were me I would probably just split files into chunks and hash each chunk, and on file change go through the hashes to see which chunk(s) changed, and then only sync those chunks. I’m assuming you’re just using the Google Drive API, so I don’t know if that functionality is even exposed as part of that.