
Das ist nicht etwas, was ich versuche. Ich versuche, ein Problem zu lösen, das bereits aufgetreten ist.
Eines unserer LIDAR-Systeme im Feld hat ein Datenerfassungslaufwerk mit doppelten Dateien zurückgegeben. Jede einzelne Datei auf dem Laufwerk hatte ein zweites Duplikat mit genau demselben Namen, derselben Uhrzeit, demselben Datum und derselben Größe. Meines Wissens nach sollte dies unmöglich sein.
Die Dateien werden auf einem Linux-PC (CentOS 7) geschrieben, aber auf NTFS gespeichert. Das liegt daran, dass sie auf Windows-PCs verarbeitet werden. Wir verwenden diese Software seit Jahren und verwenden dieselben Laufwerkstypen.
Ich habe versucht, mir Möglichkeiten auszudenken, wie das passieren könnte, aber mir ist nichts eingefallen. Wenn irgendwie zwei Instanzen der Speichersoftware laufen würden, würden sie um dieselbe Datei kämpfen und nicht eine identische Datei in dasselbe Verzeichnis schreiben. Das sollte unmöglich sein.
Dann dachte ich, dass es vielleicht ein Zufall war, dass der Windows-Datei-Explorer die Dateien nicht richtig anzeigte. Ich ließ sie das Laufwerk ausbauen und in einen anderen PC einstecken, aber es zeigte immer noch dasselbe an. Dann fragte ich mich, ob es versteckte Zeichen gab. Als sie die Daten jedoch auf ihren Server übertrugen, erkannte dieser, dass die Dateinamen identisch waren, und forderte sie auf, jedes Duplikat zu überspringen oder zu überschreiben.
Ich würde das als Zufall abtun, aber der Kunde ist fest entschlossen, der Sache auf den Grund zu gehen. Kann mir jemand einen Einblick oder sogar eine Theorie geben, wie das passiert ist?
Antwort1
Ich habe das hier schon einmal gesehen: Eine Datei hatte ein normales „a“ (ASCII 0x61), die andere hatte einen sehr ähnlich aussehenden „kyrillischen Kleinbuchstaben a“ (U+0430). Es gibt viele Zeichen im kyrillischen Alphabet, die genau wie lateinische aussehen („e“ und „o“ sind zwei weitere häufige)(*).
Eine Möglichkeit, das Problem (und den Bösewicht) zu identifizieren: dir
oder ls
speichern Sie es und sehen Sie sich die Ausgabe mit einem Hex-Editor an (unter Linux können Sie auch die kürzere Version verwenden: ls * | hd
).
Wenn ich mich richtig erinnere, ist es auch möglich, das Unicode-Zeichen „ZERO WIDTH SPACE (U+200B)“ in einem Dateinamen zu verwenden.
(*) Ich habe einige im Text dieser Antwort versteckt...