如何让 vmware windows guest 以可靠的方式查找不区分大小写的文件和文件夹,并在 Linux 主机共享文件夹(即区分大小写的文件系统)上写入不区分大小写的文件和文件夹?
我已经在 vmware 中设置了 Linux 主机上的共享文件夹,这是客户机 Windows 必须写入的位置。
我不想在 Linux 主机上安装新的不区分大小写的文件系统。
我不想在我的 Linux 主机上设置永久配置。
Vmware“应该?”处理这个问题,但是没有......我需要一个可靠的解决方法,最好不依赖于 vmware 或 windows......问题是:来自 windows 客户机的应用程序在 linux 主机共享文件夹中查找文件但找不到它(但它在那里,以“不区分大小写的方式”),所以当这个相同的应用程序尝试将文件复制到共享文件夹时,它会失败并显示错误消息“该文件已经存在”不允许覆盖它......
谢谢!
答案1
您列出了很多要求,其中一些要求似乎相互排斥。所以我并不是说我的解决方案能够满足所有要求。
您是否考虑过在您的 Linux 主机上安装 samba 服务器,然后从您的客户 Windows 系统连接到正确配置的“不区分大小写”共享?
答案2
最后我设法将几个分散的信息整合在一起,经过一些测试后,它起作用了,基本上需要做的是这样的:
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” 是可以通过网络看到的名称。
- “.ToBeShared” 表示不能直接访问的文件夹,因此将其隐藏。
- “ToBeShared” 是“.ToBeShared” 将通过 samba 挂载的文件夹!
- “guest_ok=n”防止不必要的访问。
- “username=$USER” 确保只有您可以通过网络访问它。
- “nocase” 使 samba 不区分大小写!
结束使用它之后,要禁用:
sudo umount -v ToBeShared
如果失败了,就寻找罪魁祸首
fuser -m ToBeShared
如果你找不到罪魁祸首:(
sudo umount -l -v ToBeShared
最后禁用共享
net usershare delete YourShareName
因此,这基本上是一种“假共享”,因为您将使用 vmware 访问 ToBeShared 上的文件,而不是通过网络 YourShareName(您可以忽略...)。缺点是速度稍慢,但至少不会破坏访问 Linux 文件系统的 Windows 应用程序!
如果有更好的方法,和/或可以比 samba 运行得更快,我很想知道,谢谢!
答案3
您可以使用带有 FUSE 的 ciopfs 文件系统将给定文件夹挂载到第二个位置。通过第二个位置访问时,文件名不区分大小写。
以下是他们网页上的使用示例:
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
此示例使 中的所有文件都~/tmp/ciopfs/.data
出现在 中~/tmp/ciopfs/case-insensitive
。最后两个命令表明case-insensitive
文件夹内的文件名不再区分大小写。
您可以使用此功能将数据文件夹挂载到其他位置,并与虚拟机共享该位置。由于您将共享不区分大小写的文件夹,因此通过虚拟机进行访问将不再区分大小写。