我有一个奇怪的观察。我像这样挂载了 vfat 文件系统:
mount -t vfat -o loop vfat.vol mnt
我以为它会不区分大小写。而且文件名长度不超过 8!我无法创建两个不同的文件:x1234567 和 X1234567,但我可以创建 x12345678 和 X12345678 !使用简单的 echo "abc" >filename 命令即可 100% 重现。这是怎么回事?如何使 fat volume 100% 不区分大小写?
答案1
发生这种情况的原因是,FAT 不直接支持长度超过 8 个字符的文件名,而是通过低频网扩展名。FAT 确实不区分大小写,这就是为什么您无法创建x1234567
和X1234567
文件。但是,当您创建具有长名称的文件时,会改为创建短文件名,外加一个包含全名的 LFN 条目。
因此,当您创建文件x12345678
和时X12345678
,这些文件将被赋予短名称,如X12345~1
和X12345~2
,它们是有效且不同的 FAT 名称。Linux 对检查 LFN 条目的唯一性持宽松态度,因此您最终会创建两个仅通过大小写区分的条目;这是 Windows 不允许的。但这是 Windows 的限制(或者说是功能),而不是 FAT 文件系统的限制。
旁注:我敢打赌,您还可以CON
在 FAT 卷上创建一个名为 in linux 的文件。
看vfat 文档用于定义 Linux 如何处理文件名的挂载选项。