Por que o NTFS diferencia maiúsculas de minúsculas?

24

Pessoalmente, pensei que o NTFS não diferenciava maiúsculas de minúsculas, pois você pode digitar cmd, CMD, cMd ou mesmo CmD e ainda obter o prompt de comando. No entanto, por que, durante um CHKDSK x: /f /r, às vezes corrige letras maiúsculas em alguns arquivos? Se não se importasse com o caso, não deveria importar e o CHKDSK não deveria verificar se é realmente CMD ou cmd. Estou certo? Onde isso realmente importa no sistema de arquivos?

O canadense Luke REINSTATE MONICA
fonte
25
Observe que "diferencia maiúsculas de minúsculas" e "preservação de maiúsculas e minúsculas" são duas coisas separadas. O NTFS preserva maiúsculas e minúsculas no espaço para nome Win32, mas pode fazer distinção entre maiúsculas e minúsculas no espaço para nome POSIX.
grawity

Respostas:

34

A distinção entre maiúsculas e minúsculas de um sistema de arquivos é um problema separado do sistema operacional. As versões mais recentes do Windows são baseadas no kernel do NT, que herda muitas propriedades do Windows 95 não-NT e até do MS-DOS. Juntamente com o kernel do NT, o sistema de arquivos NTFS foi projetado para diferenciar maiúsculas de minúsculas - para ser compatível com POSIX .

Embora o subsistema Win32 não ofereça suporte a nomes de arquivos que diferem apenas por distinção entre maiúsculas e minúsculas, é possível criar esses arquivos com chamadas de sistema de nível inferior.

Frank
fonte
1
Não conheço uma maneira fácil de criar esses arquivos no Windows. No entanto, chamar a API CreateFile () com o bit FILE_FLAG_POSIX_SEMANTICS deve executar o trabalho programaticamente.
Frank
2
@Luke: Win32 não suporta arquivos que diferenciam maiúsculas de minúsculas. Você precisará fazer chamadas de API para o subsistema do SO. osronline.com/article.cfm?id=91
surfasb 2/11/11
2
@Luke: Uma maneira fácil seria a de montar a unidade NTFS de um sistema Linux e criar os arquivos que você gostaria que :)
Hippo
1
Apenas verifique se você possui a versão correta do Windows NT e instale os utilitários do Subsistema para Aplicativos Baseados em UNIX, pessoal.
JdeBP
1
@ Lucas: Como de costume, a Wikipedia para o resgate. :-)
afrazier
7

Na verdade, não é sobre NTFS que você está consultando.

NTFS é o sistema de arquivos. Sua pergunta é realmente sobre a distinção entre maiúsculas e minúsculas do shell de comando do Windows. Eles são completamente diferentes. O Windows Explorer é um shell de comando gráfico. Ao digitar cmd(em Iniciar | Executar, por exemplo), você está dizendo ao shell de comando do Windows para executar o comando cmd(que, na verdade, é outro shell de comando, mas baseado na linha de comando e não na gráfica).

Da mesma forma, o CHKDSK não está verificando se você usou o CMD ou o cmd. Tudo o que o CHKDSK conhece são os parâmetros que você passa para ele, que neste caso são x :, / f e / r.

Quanto ao CHKDSK "consertar capitalização", não tenho muita certeza do que você quer dizer com isso.

squillman
fonte
4
O NTFS diferencia maiúsculas de minúsculas. De acordo com o artigo 100625 do MS KB: No NTFS, você pode criar nomes de arquivos exclusivos, armazenados no mesmo diretório, que diferem apenas no caso. Por exemplo, os seguintes nomes de arquivos podem coexistir em um diretório em um volume NTFS: CASE.TXT case.txt case.TXT No entanto, se você tentar abrir um desses arquivos em um aplicativo Win32, como o Bloco de Notas, você só terá acesso para um dos arquivos, independentemente do caso do nome do arquivo digitado na caixa de diálogo Abrir arquivo.
24411 Frank
Isso é verdade, obrigado por esclarecer isso. Eu tirei essa parte da minha resposta, já que não é realmente o que está em questão aqui.
squillman
> No entanto, se você tentar abrir um desses arquivos em um aplicativo Win32, como o Bloco de Notas, você só terá acesso a um dos arquivos, independentemente do caso do nome do arquivo digitado na caixa de diálogo Abrir Arquivo. Qual?
Synetech 3/11/11
4
@ Synetech: O primeiro, talvez? Depende da ordem dos arquivos no diretório e, possivelmente, da fase da lua.
grawity
5

Suspeito que a alegação do autor da pergunta de que o chkdsk.exe está "corrigindo letras maiúsculas em alguns arquivos" seja realmente solicitada pela mensagem do CHKDSK que ocorre em algumas circunstâncias:

corrigindo erros no arquivo em maiúsculas

Basicamente, isso resulta de uma versão do chkdsk.exe do Windows XP em execução em um volume NTFS que foi formatado em uma versão posterior do Windows, conforme descrito em Mensagem de erro ao executar o Chkdsk.exe no Windows XP ou no Windows Computador com servidor 2003: “Corrigindo erros no arquivo em maiúsculas” . O resultado é que isso realmente não é um erro e não tem nada a ver com a distinção entre maiúsculas e minúsculas.

kreemoweet
fonte