如何让 vmware windows 客户机在 linux 主机共享文件夹上查找和写入不区分大小写的文件?

如何让 vmware windows 客户机在 linux 主机共享文件夹上查找和写入不区分大小写的文件?

如何让 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文件夹内的文件名不再区分大小写。

您可以使用此功能将数据文件夹挂载到其他位置,并与虚拟机共享该位置。由于您将共享不区分大小写的文件夹,因此通过虚拟机进行访问将不再区分大小写。

相关内容