Почему смонтированный том vfat чувствителен к регистру частично?
У меня странное наблюдение. Я смонтировал файловую систему vfat так:
mount -t vfat -o loop vfat.vol mnt
Я ожидал, что это будет без учета регистра. И это до тех пор, пока длина имени файла не превышает 8! Я не могу создать два разных файла: x1234567 и X1234567, но я могу создать x12345678 и X12345678! Он на 100% воспроизводится с помощью простой команды echo "abc" >filename. Что здесь происходит? Как сделать объем жира 100% нечувствительным к регистру?
1 ответ
Это происходит потому, что имена файлов длиннее 8 символов не поддерживаются FAT напрямую, а через расширение LFN. FAT действительно нечувствителен к регистру, поэтому вы не можете создать x1234567
а также X1234567
файлы. Однако при создании файлов с длинными именами вместо них создаются короткие имена файлов, а также запись LFN, которая содержит полное имя.
Поэтому, когда вы создаете файлы x12345678
а также X12345678
эти файлы имеют короткие имена, такие как X12345~1
а также X12345~2
, которые действительны и разные имена FAT. Linux спокойно относится к проверке уникальности записей LFN, поэтому в итоге вы создаете две записи, которые различаются только в зависимости от конкретного случая; что-то, что Windows не допустит Но это ограничение (или, скорее, особенность) Windows, а не файловая система FAT.
Sidenote: Бьюсь об заклад, вы также можете создать файл с именем CON
в Linux на томе FAT.
Смотрите документацию по vfat для опций монтирования, которые определяют, как linux должен работать с именами файлов.