-
Notifications
You must be signed in to change notification settings - Fork 669
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Case sensitive versus case insentive or case preserving file systems #1348
Comments
Here is some input to consider summarized by @danimo:
|
And this is some general information how others solve this problem: https://www.dropbox.com/help/145/en |
One idea @schiesbn and I examined during lunch was to store the files on the server using hashes instead of real files names to get rid of all the encoding/special characters/casing issues. But that wouldn't be compatible with external storage, as we still need the real file names on the target storages... Just putting this here in case it might spawn other ideas. |
Awesome! More that a great starting point! |
one "simple'" way to do it would be to have mirall detect the error and just show an error to the user without syncing the file. That way we avoid dataloss (but we don't sync all the files) |
We do something similar on Windows Server already - files are stored with their 'sluggified' name. https://github.com/owncloud/core/blob/master/lib/private/files/mapper.php#L170 |
refering to @ogoffart : ...like we do it with invalid characters today for example. But what is "the error"?
other cases? |
Note that Linux (i.e. VFS) also does not guarantee a case sensitive file system. Prominent examples are JFS (by default) and SMB mounts. |
There is another case, with external storage: if there's a linux filesystem for root, but a SMB storage is mounted in "/smb", then for that mountpoint we need the same handling as with Windows FS. |
@PVince81 I think we shall continue the server side discussion in owncloud/core#4747 But generally speaking I have to agree |
@DeepDiver1975 no, nothing of this works today. Currently we only have a solution that expects the Linux way everywhere. Once we start fixing this we need to fix this on all clients very conservatively because we might have the Linux -> Server -> MacOS sync way. And in addition what @PVince81 says. The idea to handle that problem on a directory base by a PROPFIND header is ...interesting. It would be much more easier to change filenames to something that is accepted everywhere. Btw, we should make the whole story configurable for those people who never want to sync stuff cross to a system with crippled file system. |
Proposed solution: If a file cannot be synced because there is already a file existing with a different case, we do not sync that file and report an error to the user. Example: The server report to the client that there is two files Symmetrically, exactly the same happens if the client is case sensitive, but not the server. All we need from the server is a flag telling us if it is or not case sensitive (possibly per directory) @jancborchardt Is that solution good enough from an usability point of view. |
@ogoffart I’m not comfortable at all with »we do not sync the file« and »the client will pick one at random«. That’s exactly what the »(case conflict)« is for. So one would be uploaded as »Monster.png« and the other one as »monster (case conflict).png«. Does that work? |
@jancborchardt The problem with the |
Well if a case conflict is supposed to be seldom, we should still handle it properly. Picking one (if at random or not doesn’t matter) and not syncing the other is not really a feasible solution for a sync client. |
@jancborchardt yes, but we also should not have the client moving around files. Moreover, moving can cause other serious trouble if the file is opened by another software like M$ Word. |
|
Ok, the client should show a notification as well. Then when you have the file open and you see that notification, you probably get that there’s a problem. If we’re saying that case conflicts are edge cases already, then case conflicts where one of the file is open is even more on the edge. As an additional idea: Can we by any chance detect if a file is opened? Then rename the non-open file? |
Some agreements we came to during discussion – whatever implementation we end up with, it should:
|
APIs for detecting case preserving / case sensitivity:
|
This discussion is a bit old, so maybe there is somewhere more current that an ongoing discussion of file-naming issues is happening? Anyway, I will post here! |
New ticket for the server-side discussion: owncloud/core#17161 |
So, is any decision for problem now? Or developers just "to hammer a bolt" on this? |
@pmaier1 One day, we need a decision here… Related: https://github.com/owncloud/documentation/issues/2832 |
@count0-krsk Can you post this as a new bug (or search for duplicates). |
@guruz |
@count0-krsk Please create a new issue, also by mentioning the exact server and client versions you are using. Thanks |
Different systems have different file systems that handle file names differently. One particular problem is the case sensitivity handling which can cause all kinds of problems when operating in a cross platform environment.
We need to track the problems down and find a solution. This bug tracks the changes to be done on the desktop sync clients.
There is owncloud/core#4747 to track this problem on sever side.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The text was updated successfully, but these errors were encountered: