Encoding problems, files/folders are not fully synced, apparent duplication


(Dx486) #1

Hello everyone… I am a new Syncthing user. I installed Syncthing to my Mac (High Sierra), Win 10 and Linux (debian 9 stable) machines. They share one folder, with many subfolders. All machines seem “Up to Date” in Syncthing.

My file & folder names often have special Turkish characters such as ç, ş, ı, ü, ö. It seems that I have problem with file encodings when using Syncthing. Some folders with Turkish characters in their names are created twice in the Sync folder by Syncthing. They apparantly have same names in Windows & Linux, but they are probably in different encodings. I tried to check my folders’ encoding via enca, or “file -i” commands but could not find their encodings as they are directories, not files.

This causes confusion. For example, Windows explorer can sometimes see one of them, sometimes the other… So I can see in Windows&Linux two folders in the same name. This doesn’t happen in Mac. Linux file manager can show both folders in the same name but Windows explorer only shows one.

Another peculiarity I see is with my other sync software such as WinMerge. When I compare my Sync folder with the origin folder via WinMerge (which should be an identical folder because it is the original source of the Sync folder; I copied all files from it to Sync folder when I begin using Syncthing), I see many difference, although the files are identical, having same hash values.

Could you please tell me how can I solve these problems? What should I do to avoid such situations?


(Audrius Butkevicius) #2

For encoding, if you had folders pre-created on a number of machines its possible that two different os’es represented the same visible text in different encodings, yet both encodings are valid on all machines and windows just doesn’t know how to display both of them. Best I can suggest is to try to start syncing from a single source so that the same encoding would be used on all machines.

As for winmerge, its a question for winmerge forum why it shows things as different, not really for us. Perhaps it uses ctime, permissions or some other metadata when diffing…


(Dx486) #3

Thank you for your reply. I started syncing using my Windows machine as the only source. My Linux and Mac computers joined the sync at the same time, however Linux machine finished to download whole sync folder earlier, then maybe it uploaded some files to Mac computer as well as Windows computer, and this is the reason of this confusion? I don’t know.

I will make a fresh start with Syncthing as current situation is a chaos. If encoding will be a problem again, I would like to solve it before using Syncthing. As far as I remember I read in the documentation that Syncthing refuses to sync files&folders whose name are not in UTF-8 encoding; and enabling “auto normalize” option only helps when the encoding is already UTF-8. Do I have to make sure before start syncing that all file&folders are named in UTF-8 encoding? If I do that, I don’t know how to solve this issue with files that will be created in the future in different encodings, without my knowledge.


(Dx486) #4

I have tried something else. I copied a copy of my sync folder from Windows to Mac using cp command on Mac, then used diff command between the source and target directories. It reported many differences, many files & folders could not be copied. Most of their names include non-English characters. So it seems this problem is not Syncthing-specific.


(Templates) #5

Thank for your reply. My problem also same post. I’ve solve my problem. Thank for answer


(Dx486) #6

I have found some useful information in an article about Resilio Sync. It states that “Windows and Linux can store file names in composed and decomposed forms, whereas Mac can store files only in decomposed form.”. This seems the reason of my problem. To avoid the file conflicts, the article suggest that “make sure all files have unique names with the same letter case, same encoding, when folders are added to” the sync.