对于 Windows 计算机上的 NTFS,如果您创建目录“ABC”,然后尝试创建目录“abc”,它将被拒绝,因为 Windows 认为它们同名。
现在,在 Linux 上,标准 ntfs-3g 文件系统不会遇到这种情况(NTFS 本身允许两者......只是 Windows 不允许)。
我发现这-t lowntfs-3g -o ignore_case
会产生错误,但它是通过强制所有内容都小写来实现的。 mkdir ABC
结果是abc
。
有没有一种在 Linux 上使用 NTFS 的方法可以遵循 Windows 的做法?出于显示目的保留大小写,但对于操作不区分大小写?
答案1
有没有一种在 Linux 上使用 NTFS 的方法可以遵循 Windows 的做法?出于显示目的保留大小写,但对于操作不区分大小写?
显示目的是系统不知道的,它只是从文件系统读取目录条目。所以不可能既保留案例又忽略它同时。
openat()/fstat()
这是因为文件系统实现无法知道它是否正在读取(例如通过) forls
或 for 的信息cat
。
请注意,虽然-t lowntfs-3g -o ignore_case
将展示小写,它将保留原始大小写。您可以通过两个安装会话来检查:
创建文件系统:
# dd if=/dev/zero of=/tmp/ntfs bs=1M count=100
# mkfs.ntfs -F /tmp/ntfs
现在,使用ignore_case(和小写)创建AbC
:
# mount.lowntfs-3g -o ignore_case /tmp/ntfs /mnt
# mkdir /mnt/AbC
# ls /mnt
abc
# umount /mnt
之后,卸载并重新安装相同的文件系统,无需进行大小写转换:
# mount.ntfs /tmp/ntfs /mnt
# ls /mnt
AbC
# umount /mnt
不过,您想要实现的目标是可行的。从我看来,ntfs-3g
目前的实施情况并非如此。您可以使用自定义的ls
或文件资源管理器来实现这种行为(毕竟 Windows 会这样做) 。例如,预加载readdir()
看起来也可能有效。