
이것은 내가 하려는 일이 아닙니다. 이미 발생한 문제를 파악하려고 합니다.
현장의 LIDAR 시스템 중 하나가 중복 파일이 있는 데이터 수집 드라이브를 반환했습니다. 드라이브의 모든 단일 파일에는 정확히 동일한 이름, 시간, 날짜 및 크기를 가진 두 번째 복제본이 있었습니다. 내가 아는 한 이것은 불가능할 것이다.
파일은 Linux PC(CentOS 7)에 작성되었지만 NTFS에 저장됩니다. 이는 Windows PC에서 처리되기 때문입니다. 우리는 이 소프트웨어를 실행하고 수년 동안 동일한 유형의 드라이브를 사용해 왔습니다.
나는 이것이 일어날 수 있는 방법에 대해 생각하려고 노력했지만 어떤 것도 생각해낼 수 없었습니다. 만약 두 개의 스토리지 소프트웨어 인스턴스가 실행 중이라면 동일한 디렉토리에 동일한 파일을 쓰는 것이 아니라 동일한 파일을 놓고 싸우게 될 것입니다. 이것은 불가능합니다.
그런 다음 Windows 파일 탐색기에서 파일을 표시하는 것이 우연일 수도 있다고 생각했습니다. 드라이브를 꺼내서 다른 PC에 넣으라고 했는데 여전히 같은 증상이 나타났습니다. 그러다가 숨겨진 캐릭터가 있는지 궁금해졌어요. 그러나 데이터를 서버로 전송했을 때 파일 이름이 동일하다는 것을 인식하고 각 중복을 건너뛰거나 덮어쓰라는 메시지를 표시했습니다.
나는 이것을 우연이라고 쓰고 싶지만 고객은 이 문제의 원인을 밝히기 위해 단호하게 노력하고 있습니다. 누가 나에게 이런 일이 어떻게 일어났는지에 대한 통찰력이나 이론을 줄 수 있습니까?
답변1
나는 이런 일이 일어나는 것을 보았습니다. 한 파일에는 일반 "a"(ASCII 0x61)가 있었고 다른 파일에는 매우 유사한 "키릴 문자 a"(U+0430)가 있었습니다. 키릴 문자 알파벳에는 라틴 문자와 똑같은 문자가 많이 있습니다("e", "o"는 다른 두 개의 자주 사용되는 문자입니다)(*).
문제(및 불량자)를 식별하는 한 가지 방법: dir
또는 ls
16진수 편집기를 사용하여 파일을 작성하고 출력을 확인하는 것입니다(Linux에서는 더 짧은 형식인 를 사용할 수도 있습니다 ls * | hd
).
IIRC 파일 이름에 유니코드 "ZERO WIDTH SPACE (U+200B)" 문자를 사용할 수도 있습니다.
(*) 이 답변의 텍스트에 일부를 숨겼습니다...