Como os arquivos com o mesmo nome podem ser criados em uma pasta?

2

Isso não é algo que estou tentando fazer. Estou tentando descobrir um problema que já aconteceu.

Um dos nossos sistemas LIDAR no campo retornou uma unidade de coleta de dados com arquivos duplicados. Cada arquivo na unidade tinha uma segunda duplicata com o mesmo nome, hora, data e tamanho. Pelo que sei, isso deveria ser impossível.

Os arquivos são gravados em um PC Linux (CentOS 7), mas são armazenados em NTFS. Isso ocorre porque eles são processados em PCs com Windows. Nós rodamos este software e usamos os mesmos tipos de drives por anos.

Eu tentei pensar sobre como isso poderia ocorrer, mas não consegui encontrar nenhuma. Se de alguma forma duas instâncias do software de armazenamento estivessem rodando, elas estariam brigando pelo mesmo arquivo, não escrevendo um idêntico no mesmo diretório. Isso deveria ser impossível.

Eu então pensei que talvez fosse um golpe de sorte com o Windows File Explorer exibindo os arquivos. Eu mandei eles tirarem a unidade e colocarem em outro PC e ele ainda mostrou o mesmo. Então me perguntei se havia caracteres ocultos. No entanto, quando transferiram os dados para o servidor, reconheceram que os nomes dos arquivos eram idênticos e os incentivaram a ignorar ou substituir cada duplicado.

Eu iria escrever isso como um acaso, mas o cliente é inflexível em tentar chegar ao fundo disto. Alguém pode me dar alguma idéia ou mesmo uma teoria sobre como isso aconteceu?

    
por Blackwood 26.09.2017 / 16:44

1 resposta

2

Eu já vi isso acontecer: um arquivo tinha um "a" regular (ASCII 0x61), o outro tinha uma "letra pequena cirílica a" muito semelhante (U + 0430). Existem muitos caracteres no alfabeto cirílico que parecem exatamente com aqueles ("e", "o" são outros dois freqüentes) (*).

Uma maneira de identificar o problema (e o malvado): dir ou ls para arquivo e olhar para a saída com um editor hexadecimal (no Linux você também pode usar o menor: ls * | hd ).

IIRC também é possível usar o caractere Unicode "ZERO WIDTH SPACE (U + 200B)" em um nome de arquivo.

(*) Eu escondi alguns no texto desta resposta ...

    
por 27.09.2017 / 00:41