I setup my 2 tablets 1 phone and PC to do a one way sync. Or so I thought… it turns out “send only” is not as the name suggest. No it creates differences (naturally) as different files are saved and not synced to the other devices. but then a “override changes” button appear. I thought "it will override the error (changes) log or GUI. I did not expect it to remove ALL the files on the other devices (worst, I thought, it would only mess up the device I pushed the button on), I did after all set it up as one-way. So if a developer reads this please change the wording or at even better make en option for true one-way.
And no, I cannot do an undelete as the PC has a SSD with TRIM enabled. Nor does it seem that android has the option for non-rooted devices.
I’d suggest a message box popping up on button press with a sentence explaining “that it does force other devices to have the local folder’s state” and that this also means deletions are enforced with a red yes and a grey no button. The user would still have to read the docs and understand Syncthing but “clicking by accident” would be prevented.
I tend to agree that a confirmation is appropriate here. The button is already red (danger) and it will annoy users that took the time to actually read what the folder types mean (either in the folder edit dialog or the docs @Andy linked above), but these (override and revert) are potentially destructive operations, so that annoyance seems justifiable.
While I still think the folder type names and descriptions are appropriate, they clearly couldn’t convey their meaning to you (@Teddy). Thus I am interested whether you would have selected “Yes” or “No” if a popup with the following text would have appeared after pressing “Override”:
Warning!
This is dangerous operation, which will change and/or delete data - make sure you understand the consequences before going ahead.
You are about to override all remote devices with the current content of your local folder. For example a new file added on a remote will be deleted on all remotes, or a changed file will be overwritten with the file present locally everywhere. For more info on folder types, see the docs: Folder Types.
Are you certain that you wish to continue and override changes?
Obviously that question is flawed as you now know more than you did before, I still would be interested in your answer.
I also vote for a big red confirmation for both “Override Changes” (Send Only) and “Revert Local Changes” (Receive Only).
In addition, I know that this has been proposed many times before, but I personally would strongly suggest enforcing sensible default versioning (e.g. a 7d trash can). This would help prevent this kind of disasters for new users, and experienced users will be able to easily disable it anyway (especially once the new folder defaults configuration gets implemented, possibly soon).
I agree on the confirmation (though it needs to be much shorter and to the point, I think, maybe something like “Warning: the folder contents on OTHER devices will be overwritten to become identical with THIS device. Files not present here will be deleted on other devices.”?). Let’s await configurable defaults before discussing how to change the defaults going forward…
When I get a ‘revert changes’ on the Send Only side, i’m never sure if it’s deleting the actual files, or the references to the files in the database. In theory, on SO, it shouldn’t even come up as that’s the master set of files, but for some reason it occasionally appears
You seem to be misunderstanding one of the base principles here, that is: Syncthing treats all the nodes as equal. There are no “master” nodes that tell others what to do, and there are no “slave” nodes that do what they are told. Every node governs itself.
A random node somewhere in the swarm may not even be aware that there is an SO node. The only node that is guaranteed to know about SO node’s existence is the SO node itself. The other nodes may not even know they have changes that SO node does not accept.
Revert changes is basically a command for SO node to tell everyone else: “Here’s the current state of the folder, this is how it should look like, this is the latest and greatest!” Then the other nodes be like: “Oh, this new file is not in the latest-and-greatest state of the folder, so we should delete it”, “Look, this file’s version is not what is in latest-and-greatest, we need to replace it (thus removing last week’s work”, etc. So of course revert changes appears on the SO node, not the other nodes — only the SO node knows that it’s the SO node.
I would have pressed yes, as I still think the “override” should be replaced with “force delete”. Or something similar, unless explained it will delete files on all other devices as you suggested in your post. The wording @calmh is using is short and to the point. Maybe a combination would be a the way? the short version and a “read more” with your more detailed explanation.
This is in my mind not a bad idea, when using this function. Good thought!
This is a contradiction in itself. in “send only” mode they will be unequal the first time a file is deleted in another node.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Maybe the button should change name, and come with a warning. I know I the one who made an error. Yet you can not document your way out of human stupidity. My view on a CAPA is:
Corrective here and now: none since the data is lost and cannot be recovered.
Corrective in the future: A 7 days grace period as tomasz86 suggest.
Preventive: a 2 stage dialog box, with a short wording like calmh wrote, but with a “read more” / “detailed explanation” link with a more thorough explanation like imsodin wrote.
P.S Why new users can only mention 2 users in a post? a counter productive limitation.
No, that just means their state is no longer identical. They’re still making decisions about how to manage their own state independently and based on the information available to them. As you noted in the original post, the send only setting didn’t do what you expected - that is the root issue here.
Out of curiosity, what do you mean by “true one-way”?
I mean a way where it is set, and under NO circumstances can be affect other nodes. Nor can it under NO circumstances enforce a delete command. Therefore in logic, true one-way.
Sorry for the necro, but this is still an issue (at least on the Android app). No confirmation saying that changes would apply to all devices. I had thought it was changing the files on the local device. Lost several hours of work D:
Wait, it’s possible I was the one that messed up. It seems it was set to “send only” instead of “receive only” so I don’t know if that affected the messages.
The Android app indeed doesn’t show any additional warnings, so you should be very careful when clicking those buttons there. Having proper backups or at least file versioning enabled in Syncthing is very recommended.
The fork app will soon be testing the default folder initially set up as sendReceive instead of sendOnly to avoid the override changes situation. But maybe, someone may delete files on another device and then say, my files on phone are gone (?).
The message is ambiguous, and the assumption that almost any users will go and read the documentation (or know the documentation well enough) is further evidence that the devs are out-of-touch with their users. I have no idea why syncthing can’t do the simple thing that dropbox, drive etc can do: make sure one device doesn’t overwrite another device with older changes (or at least warn well). My quick glance at the dropbox, drive forums don’t seem to have this issue. Why is this so hard? Lesson here for users: the devs may lack technical ability to do this correctly, and even worse lack the user understanding to respond with these concerns with anything but incredulity.