
這不是我想做的事情。我正在試圖找出一個已經發生的問題。
我們在現場的一個雷射雷達系統返回了一個包含重複文件的資料收集驅動器。磁碟機上的每個檔案都有第二個副本,具有完全相同的名稱、時間、日期和大小。據我所知,這應該是不可能的。
這些檔案是在 Linux PC (CentOS 7) 上編寫的,但儲存在 NTFS 上。這是因為它們是在 Windows PC 上處理的。我們多年來一直運行該軟體並使用相同類型的驅動器。
我試著思考這種情況可能發生的方式,但我想不出任何辦法。如果不知何故儲存軟體的兩個實例正在運行,它們將爭奪同一個文件,而不是在同一目錄中寫入相同的文件。這應該是不可能的。
然後我想,Windows 檔案總管顯示這些檔案可能是僥倖。我讓他們取出驅動器並將其放入另一台電腦中,但它仍然顯示相同的內容。然後我想知道是否有隱藏的角色。然而,當他們將資料傳輸到伺服器時,伺服器識別出檔案名稱相同,並提示他們跳過或覆蓋每個重複項。
我認為這只是僥倖,但客戶堅持要查清真相。誰能給我任何關於這是如何發生的見解甚至理論?
答案1
我見過這種情況發生:一個文件有一個常規的“a”(ASCII 0x61),另一個文件有一個看起來非常相似的“西里爾小寫字母a”(U+0430)。西里爾字母中有許多字元看起來與拉丁字元完全相同(「e」、「o」是另外兩個常見的字元)(*)。
識別問題(和壞人)的一種方法:dir
或者ls
使用十六進位編輯器歸檔並查看輸出(在 Linux 中,您也可以使用較短的ls * | hd
:)。
IIRC 也可以在檔案名稱中使用 Unicode「ZERO WIDTH SPACE (U+200B)」字元。
(*)我在這個答案的文字中隱藏了一些...