Questão por que o volume montado do vfat é parcialmente sensível a maiúsculas e minúsculas?


Eu tenho uma observação estranha. Eu montei o sistema de arquivos vfat assim:

mount -t vfat -o loop vfat.vol mnt

Eu esperava que fosse insensível a maiúsculas e minúsculas. E é enquanto o comprimento do nome do arquivo não for maior que 8! Não consigo criar dois arquivos diferentes: x1234567 e X1234567, mas posso crie x12345678 e X12345678! É 100% reproduzível com simples echo "abc"> nome do arquivo comando. O que está acontecendo aqui? Como tornar o volume de gordura 100% insensível a maiúsculas e minúsculas?


1


origem




Respostas:


Isso acontece porque os nomes de arquivos com mais de 8 caracteres não são suportados diretamente pelo FAT, mas via LFN extensão. FAT é, na verdade, insensível a maiúsculas, é por isso que você não pode criar x1234567 e X1234567 arquivos. No entanto, quando você cria arquivos com nomes longos, são criados nomes de arquivo curtos, além de uma entrada LFN que contém o nome completo.

Então, quando você cria arquivos x12345678 e X12345678, esses arquivos recebem nomes curtos como X12345~1 e X12345~2, que são nomes FAT válidos e diferentes. O Linux tem uma atitude relaxada para verificar a unicidade das entradas do LFN, de modo que você acaba criando duas entradas que são diferenciadas apenas por maiúsculas e minúsculas; algo que o Windows não permitiria. Mas isso é uma limitação (ou melhor, uma característica) do Windows, não do sistema de arquivos FAT.

Sidenote: Aposto que você também pode criar um arquivo chamado CON no linux em um volume FAT.

Vejo documentação vfat para opções de montagem que definem como o linux deve funcionar com nomes de arquivos.


2



Ok, então eu considero um bug no driver do Linux. Obrigado. - ardabro