Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

How to make vmware windows guest look for case insensitive files and folders, and write case insensitive files and folders on a Linux host shared folder, that is a case sensitive file-system, in a reliable way?

I have setup in vmware, the shared folder on Linux host, that is where the guest windows must write to.

I dont want to install a new case insensitive file-system on Linux host.

I dont want to setup permanent configurations on my Linux host.

Vmware "should?" be handling this, but is not... and I need a reliable workaround that preferably doesnt depend on vmware or windows... the problem is: an application, from windows guest, looks for a file in linux host shared folder and does not find it (but it is there, in a "case insensitive way"), so when this same application tries to copy the file to the shared folder, it fails with error saying "the file is already there" not allowing it to be overwritten...

thx!

share|improve this question
    
From a biased perspective, I can point out that case insensitive file paths are flawed and that problem you are describing is more of a habit. At any rate, the application should either give you an option to overwrite, or use case insensitive paths. So your options are either use/write better applications or complain to the vendor of the file-access library used in your application and make a feature request. Alternatively, you could embrace the beauty of case sensitive file paths and change your entire world view. –  Ярослав Рахматуллин Mar 13 '13 at 6:50
    
there are many good softwares tied to windows way :(. feature requests are scheduless heh, I want it now :). I am sticking to case sensitive so much that I want a workaround that let me avoid format my HD to a case insensitive filesystem! o/ –  Aquarius Power Mar 13 '13 at 11:18

3 Answers 3

You have listed a lot of requirements and some of them seem to be mutually exclusive. So I am not claiming that my solution is going to meet all of them.

Have you thought about installing samba server on your linux host and then connecting to a properly configured for "case-insensitivity" share from your guest Windows system?

share|improve this answer
    
the problem is the connection thru a networked samba share; the vmware shared folder is a mount point directly in the host OS; and I only need that one sub-folder become case insensitive, all the remainder must remain sensitive (more restrictions :)); but I still think samba may be the most reliable way (there is also ciopfs but it requires files on sensitive folder to be all lowercase what I dont like much, but I believe can be faster than samba) –  Aquarius Power Mar 13 '13 at 11:24

Finally I managed to unite several scattered pieces of information and after some tests it worked, basically what needs to be done is this:

net usershare add YourShareName /FullLocalPath/.ToBeShared "Description" everyone:F guest_ok=n
net usershare info --long #confirm it worked
mkdir -v ToBeShared
chmod 0777 ToBeShared #this step seems necessary, needs confirmation
sudo mount -t smbfs localhost:/YourShareName ToBeShared -o username=$USER,nocase
  • "YourShareName" is the name that can be seen thru network.
  • ".ToBeShared" the folder that must not be accessed directly so hide it.
  • "ToBeShared" is the folder where ".ToBeShared" will be mounted through samba!
  • "guest_ok=n" prevent unwanted access.
  • "username=$USER" make it sure only you have access to it thru network.
  • "nocase" makes samba work in case insensitive!

After you end working with it, to disable:

sudo umount -v ToBeShared

if it fails, look for the culprit

fuser -m ToBeShared

if you cant find the culprit :(

sudo umount -l -v ToBeShared

and finally disable the sharing

net usershare delete YourShareName

So basically this works as a "fake sharing", because you will access the files at ToBeShared with vmware, and not thru network YourShareName (that you can ignore...). The drawback is it is somewhat slower, but at least dont break windows applications accessing linux filesystem!

If there is a better way, and/or that can work faster than samba, I would like to know, thx!

share|improve this answer

You can use the ciopfs filesystem with FUSE to mount a given folder in a second location. When accessed via the second location, the filenames are case insensitive.

Here is their example use from their web page:

mkdir -p ~/tmp/ciopfs/{.data,case-insensitive}
ciopfs ~/tmp/ciopfs/.data ~/tmp/ciopfs/case-insensitive
cd ~/tmp/ciopfs
mkdir -p case-insensitive/DeMo/SubFolder
echo demo >> case-insensitive/DEMO/subFolder/MyFile

This example makes all the files in ~/tmp/ciopfs/.data appear in ~/tmp/ciopfs/case-insensitive. The last two commands show that filenames inside the case-insensitive folder are no longer case sensitive.

You can use this to mount your data folder in a different location, and share that location with the VM. Because you would be sharing the case-insensitive folder, access via the VM will no longer be case sensitive.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.