Почему смонтированный том 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 должен работать с именами файлов.

Другие вопросы по тегам