1

У меня странное наблюдение. Я смонтировал файловую систему vfat так:

mount -t vfat -o loop vfat.vol mnt

Я ожидал, что это будет без учета регистра. И это до тех пор, пока длина имени файла не превышает 8! Я не могу создать два разных файла: x1234567 и X1234567, но я могу создать x12345678 и X12345678! Он на 100% воспроизводится с помощью простой команды echo "abc"> filename. Что здесь происходит? Как сделать объем жира 100% нечувствительным к регистру?

1 ответ1

2

Это происходит потому, что имена файлов длиннее 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 должен работать с именами файлов

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .