adding file to send only folder immediately leads to Out of Sync

Easy to reproduce: Part 1: Android:

  • share the Pictures Folder.
  • Send only.
  • share with ServerPC.

ServerPC (Ubuntu, Docker):

  • accept the Pictures folder from Android
  • choose an empty non existing folder.
  • leave it to send&receive.
  • via settings>advanced enable “ignore deletes” and “ignore perm” for this folder.

Situation: the folder is synced fully to the ServerPC.

Part 2: on Android move 1 photo from camera folder to /Pictures folder. Make no other changes to this folder.

expected behaviour: this photo is synced to ServerPC.

actual behaviour:

  • the folder on ServerPC is immediately out of sync!
  • The red “out-of-sync” text seems to quickly flash to “up-to-date” and back to “out-of-sync” every now and then, but it happens very fast.
  • when I click on it, I get an empty but colourful popup (reused … downloading) no files nothing, an empty table. No button to override changes.
  • when I disable ignore deletes via the Settings>Advanced menu, the folder is instantly up-to-date!
  • Up to date with ignore deletes disabled even though Android says 2409 / 2409 files and ServerPC says 2112 files / 21 folders!

I can repeat the above, by simply moving 1 photo to my Android/Pictures folder, the “up-to-date” folder immediately becomes out of sync when “ignore deletes” is enabled on the ServerPC for this folder.

All the while I did not touch the folder on the pc…

Edit:

I figured it out, here are my findings including 1 ‘issue’:

  1. Android keeps a .thumbnails folder in /Pictures. best to exclude it. Now I can safely add pictures on my phone without the host getting out-of-sync.

  2. When you delete files on the phone, the files will NOT get deleted on the host. Global vs Local # of files is different = out of sync.

  3. Even when you deleted files on your phone and the status on the host becomes out of sync, newly added files on the phone will get synced to the host. <— issue: this is not clear for the end user!

So basically: it is working as expected. However it is a bit scary to see that big red message as it implies syncing has stopped completely.

I do wonder: the host is still set to send/receive. What would change if I would modify this to receive only? Isn’t it exactly the same? Since the phone folder is set to send only.

Out of sync with ignore deletes is indeed expected. And yeah, receive-only on the other side would in this case not make much of a difference at all.

But why are “out-of-sync” items clickable on the host, but it leads to an empty screenshot (as shown)? There is no button.

The only possible action to provide to the user would be a button to accept changes from the device(= delete the files).

and also: the device (phone) will forever show that the connected host is “Syncing 98%”. Even though it has finished sending the files. This seems like a bug.

I don’t know, might be a bug.

This is a documented “feature” of ignore deletes. It’s hidden by several layers of warnings for a reason :slight_smile:

I haven’t found anything about “98%” in the documentation, I’ve read most of it by now but especially Ignore Deletes and folder types:

https://docs.syncthing.net/advanced/folder-ignoredelete.html

That article says each will look out of date from the other. Out of date will manifest as <100% completion.

That is a very strange and illogical design decision. All changes have been synced, adhering to the options that were selected. Therefore it should be 100% and nothing else.

But all changes have not been synced – the deletes have been ignored and not applied.

You are using bidirectional sync software for unidirectional sync. It’s not meant for that, hence stuff will be out of sync.

If it is not meant for that, why is “send only” an option… that is unidirectional sync.

But my issue really isn’t 2-way versus 1-way sync. I could live with 2-way sync for all my purposes (since I used SyncThing in combination with Duplicati in the past) if only I could set a rule defining 2-way sync as “syncing everything except deletes” AND keep the possibility to identify actual sync issues. Now I will always see sync is hanging (the 98%) which could mean 2 things (the deletes have not been synced (as desired) or something else is preventing syncing from finishing).

Now, without that no-deletes option: before Duplicati has backed up files that have been synced to the server, SyncThing could have already synced the delete action that I accidentally did on my mobile device.

Perhaps you should just run rsync on a cron, as you want files from A to travel to B, and not delete anything. Effectively, simple file transfer.

Syncthing is not aimed at being a file transfer tool.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.