Resilio Connect is a cross-platform solution and it works with different file systems, each of them having their own rules for filenames, characters sets, metadata, storage management and other aspect. When syncing a file, Connect agent instructs the local file system to write the given file to a given location. This is where you might encounter file Conflicts in the directories.
Basically these appear when two files are trying to get synced into one: the local FS already has such a file, but remote FS considers them to be two different files.
The most vivid example is the lettercase conflict. File systems can be case-sensitive which do differentiate between lettercase, and case-insensitive, which do not. Former, mainly on Linux, consider Filename and filename be two different files. The latter, mainly used on OS X and Windows, consider these the same file.
When adding a case-insensitive FS into a mesh, it will create filename.Conflict, if two files with same name will be attempting to be written here.
All this is valid not only for files, but also for folders' names - folders also may have conflicted names. The files inside, provided they themselves are not conflicting, will remain untouched.
Other known causes for creating a Conflict are:
- Composed/decomposed UTF symbols (names with umlauts, accents are at risk).
- Filename has a symbol prohibited by file system. On Windows these are replaced with underscore [ _ ].
- Files/folders located in linked junctions.
Composed/decomposed UTF symbols explained
Windows and Linux can store file names in composed and decomposed forms, whereas Mac can store files only in decomposed form. For example, we have two files: "composéd.txt" created on Linux or Windows and "decomposéd.txt" created on Mac:
For the human eye "é" is the same for both files. But actually in the file system those symbols are different
How to handle the Conflict?
First of all, do not delete them! This will lead to 'correct' file being deleted off remote agents:
Do not rename Conflicted files an folders and do not just remove .Conflict form their names! The root cause for the conflict will still be there and renaming will just bring about more Conflicts - renamed file will also be the conflicting one and you'll end up with filename.Conflict.Conflict.Conflict
So how to get rid of them?
The surest way is not to let them appear. But once they are there, follow these steps:
- find the 'healthy' file among the conflicted (on the agent that has RW access in the job)
- move it out of the folder. Not just copy, but move. Wait till its counterpart is moved from the folder on other agents.
- delete all the conflicting remnants from all agents.
- make sure that the conflicting factor is also eliminated and put the healthy file back to the directory.