Linux:不区分大小写的文件系统

Qua*_*ary 14 linux filesystems mono case-insensitive

有什么方法可以使 Linux 文件系统 case-INSENSITIVE ?

我在 Windows 上开发了 asp.net 应用程序,但是将它放在 Linux 上时,它总是存在大小写/拼写问题。

一种方法是将本地主机 SMB 共享挂载到 /var/www。还有其他人吗?

Eva*_*son 15

有一个不区分大小写的 ext3 driver,但坦率地说,在生产中运行这样的东西会让我有点害怕,因为您正在使用修补驱动程序滚动您自己的自定义内核。(是的,是的 - 我们一直在“回到当天”这样做,但那是,就像,1997年......)

有一个 FUSE 实现,ciopfs,它也实现了不区分大小写。在生产中使用这对我来说比打补丁的内核要少得多。

您还可以对文件/var/www夹层次结构使用不区分大小写的文件系统,例如 VFAT 。在这种情况下,我会使用环回挂载,这样您就不必弄乱磁盘分区。


tyl*_*erl 15

如果您只在 Mono 下运行的应用程序中讨论不区分大小写,您可以使用IOMAP环境变量告诉 mono 忽略大小写,就像 Windows 一样。

在此处查看有关其使用的详细信息:http : //www.mono-project.com/IOMap


Qua*_*ary 9

死灵法术。
回答我自己的问题。
这确实是可能的。
变体 1:
创建一个大小为 X-MB(使用 dd)的 .dsk 文件,然后在该文件上创建一个 JSF 文件系统,使用选项 O(OS2 兼容性 - = 不区分大小写)
然后将该文件循环挂载到所需的文件夹中.

(apt-get install jfsutils)
dd if=/dev/zero of=jfs.dsk bs=1048576 count=150
mkfs.jfs -O jfs.dsk
mkdir -p /mnt/jfs
mount /volumes/jfs.dsk /mnt/jfs -t jfs -o loop
umount /mnt/jfs/
Run Code Online (Sandbox Code Playgroud)

变体 2:
当您安装操作系统时,手动对磁盘进行分区,并创建另一个格式为 JFS 的分区,您可以将其挂载到您想要的任何位置。
当一切都启动并运行时,您可以重新格式化该分区(警告 - 这将删除该分区上的所有数据 - 请确保您选择了正确的一个,并且上面没有任何数据):

卸载挂载的分区

umount /web
Run Code Online (Sandbox Code Playgroud)

重新格式化:

mkfs.jfs -O /dev/hda5
Run Code Online (Sandbox Code Playgroud)

重新挂载分区

mount /dev/hda5 /web
Run Code Online (Sandbox Code Playgroud)

现在运行

blkid
Run Code Online (Sandbox Code Playgroud)

你会得到新的分区 uuid。
现在转到 /etc/fstab,并将 /dev/hda5 的旧 uuid 替换为新的。

如果您做错了,另请参阅
欢迎使用紧急启动模式...

  • @Andrew Henle:不,我们实际上选择了另一种解决方案 - 区分大小写的 Windows 分区 (ext3)。现在 .NET Core 问题再次浮出水面,这就是我想出的解决方案。现在我有一个不区分大小写的 Linux 分区,不需要保险丝/ciops、smb、hfs/hpfs+、一个被黑的 extX-fs、loop mount 或任何废话。这是正确的方法。到目前为止,在过去的 7 年里,没有人真正满意地回答过这个问题,所以我想我会的。 (4认同)
  • 谢谢你,我已经成功了。对于 2020 年关注此问题的人来说,请注意 Linux 内核 5.2 和 e2fsprogs 1.45 添加了对 ext4 的 casefold 支持。请参阅:https://unix.stackexchange.com/questions/558977/how-to-enable-new-in-kernel-5-2-case-insensitivity-for-ext4-on-a-given-directory (2认同)