Renaming files and folders

Continuing the discussion from Renaming files and folders:

Here’s my 2c:

  1. Renaming / Moving files when not picked up by watching can be solved easily via an .stcache (like a recycle bin):
  • Alice renames / moves a bunch of /some/path/files to /some/other/path/files (not picked as a move by watching)

  • Bob gets info that /some/path/files are deleted. Here’s the twist: instead of deleting them directly, it moves them temporarily to some .stcache folder (having kept all the hashing blocks these files contain).

  • Following, Alice is re-hashing the “new” moved files in /some/other/path/files, and asks Bob if they have these blocks to put in /some/other/path/files. Bob now already has the files in its .stcache, hence tells Alice “I got these, don’t send the whole thing".

  • Once Alice (the node that initiated the sync move that is delete/copy) is completely synced, Bob can discard anything that remained in its .stcache.

This way, rescanning & rehashing Alice can’t be avoided, but its necessary and its only done quickly (locally). The cool thing is nothing but hashes gets transferred via the (slow) network.

The only downside is rehashing in Alice plus some temporary space overhead in Bob for deleted files (the .stchache) for a short while, which is so much better that resending & then rewriting GBytes of data all over again.

  1. Removing the functionality of partial / delta updates because “only 2% of transfers use it”, is a VERY BAD decision IMO.

It’s like saying “Linux Desktop is only 2%, lets kill it”.

Maybe only 10% of users actually use it, and only for their 20% of the data send over. But this “exception” for them is crucial. VeraCrypt or .vhd of hundreds of GBytes will have to be resend and recopied in totality, just cause they mounted it and changed a readme file! This sucks. This feature is what made DropBox so much better than OneDrive, Google Drive and the rest.

It might be an exception to the rule, but it’s exception handling that makes products exceptional. I will never upgrade to v2.x until this is re-added, and I will be actively looking to replace SyncThing altogether.