有哪些方法可以使 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 方式。