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

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

有哪些方法可以使 Linux 文件系统不区分大小写?

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

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

答案1

如果你谈论的是在 Mono(>=1.1.18 & <6.0.0)下运行的应用程序中仅不区分大小写,则可以使用互联网地图功能告诉 Mono 忽略大小写,就像 Windows 一样。

$ export MONO_IOMAP=all
$ mono myapp.exe

对于使用 mod_mono 托管的 ASP.NET 应用程序,您可以将以下指令添加到 Apache 配置文件中:

MonoSetEnv MONO_IOMAP=all

答案2

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

有一个 FUSE 实现,韋普斯,它还实现了不区分大小写。与打过补丁的内核相比,在生产中使用它会让我少担心很多。

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

答案3

有两种方法可以做到这一点:

变体 1:
创建一个大小为 X-MB 的 .dsk 文件(使用 dd),然后在该文件上创建一个 JSF 文件系统,使用选项 O(OS2 兼容性 - = 不区分大小写)
然后将该文件循环安装到所需的文件夹中。

要创建一个JFS 文件系统,您需要安装 jfs-utils。
在 Ubuntu 上,您可以使用以下命令执行此操作:

sudo apt-get install jfsutils

现在你需要创建一个一定大小的空文件,例如 1 GB

dd if=/dev/zero of=/tmp/test-jfs.img bs=1048576 count=150

现在您需要在 /tmp/test-jfs.img 中创建一个 jfs 分区
笔记:/tmp/test-jfs.img 中的所有数据都将丢失!

mkfs.jfs -O /tmp/test-jfs.img 

然后需要递归创建一个挂载目录(/mnt/jfs):

mkdir -p /mnt/jfs

然后你需要在 /mnt/jfs 中循环挂载(在生产中不推荐)该分区

mount /tmp/test-jfs.img /mnt/jfs -t jfs -o loop

如果成功,你现在可以创建一个分区,例如使用 touch

touch /mnt/jfs/aBc

如果你 ls,你会看到它在那里

ls /mnt/jfs

如果你

ls /mnt/jfs/AbC 

您已测试成功,现在可以卸载该分区:

umount /mnt/jfs/

并删除临时文件

rm /tmp/test-jfs.img 

方案 2:
安装操作系统时,手动对磁盘进行分区,并创建另一个 JFS 格式的分区,将其挂载到您想要的任何位置。
一切正常后,您可以使用以下命令重新格式化该分区(警告 - 这将删除该分区上的所有数据 - 确保您选择了正确的分区,并且该分区上还没有任何数据):

卸载已挂载的分区

umount /web

重新格式化:

mkfs.jfs -O /dev/hda5

重新挂载分区

mount /dev/hda5 /web

现在运行

blkid

然后你就得到了新的分区 uuid。
现在转到 /etc/fstab,用新的 uuid 替换 /dev/hda5 的旧 uuid。

如果你做错了,另请参阅
欢迎来到紧急启动模式...

答案4

@Quandary 我尝试使用 JFS 方式,使用 -O 选项制作 img。但对我来说它仍然会出错。例如我得到:

System.InvalidOperationException
The view 'Logon' or its master was not found. The following locations were searched:
~/Views/Account/Logon.aspx
~/Views/Account/Logon.ascx
~/Views/Shared/Logon.aspx
~/Views/Shared/Logon.ascx

aspx 文件实际上名为LogOn.aspx。它确实解决了一些问题,但我仍然收到错误。不幸的是,我仍然使用 18.04,因此无法尝试 ext4 方式。

相关内容