Как можно создать файлы с одинаковым именем в папке?

320
Blackwood

Это не то, что я пытаюсь сделать. Я пытаюсь выяснить проблему, которая уже произошла.

Одна из наших систем LIDAR в полевых условиях возвратила диск сбора данных с дубликатами файлов. Каждый файл на диске имел второй дубликат с точно такими же именем, временем, датой и размером. Насколько я знаю, это должно быть невозможно.

Файлы записаны на ПК с Linux (CentOS 7), но они хранятся в NTFS. Это потому, что они обрабатываются на ПК с Windows. Мы использовали это программное обеспечение и использовали одни и те же типы накопителей в течение многих лет.

Я пытался придумать, как это может произойти, но не смог придумать ничего. Если бы каким-то образом работали два экземпляра программного обеспечения для хранения, они бы боролись за один и тот же файл, а не записывали один и тот же в один и тот же каталог. Это должно быть невозможно.

Затем я подумал, что, возможно, это была случайность с Windows File Explorer, отображающим файлы. Я заставил их вынуть диск и вставить его в другой компьютер, и он все еще показывал то же самое. Я тогда задавался вопросом, были ли скрытые персонажи. Однако, когда они передали данные на свой сервер, он распознал, что имена файлов были идентичны, и предложил им пропустить или перезаписать каждый дубликат.

Я бы списал это как случайность, но клиент непреклонен в попытке разобраться в этом. Может ли кто-нибудь дать мне какое-либо понимание или даже теорию о том, как это произошло?

2
Одинаково ли использование заглавных букв в обоих файлах? Если вы сравниваете MD5, у обоих файлов одинаковый хэш? Steven M. Vascellaro 6 лет назад 0
Что программа `file` показывает о двух файлах? AFH 6 лет назад 0
Да, капитализация была точно такой же. Я не думал о сравнении MD5. К сожалению, клиент уже переформатировал накопители, поэтому я не могу сделать это сейчас. Если это случится снова, то это будет мой первый шаг. Blackwood 6 лет назад 0
Заказчик уже переформатировал приводы в полевых условиях. К сожалению, у меня никогда не было физического доступа к ним. У меня были только скриншоты и лог-файлы. Логи не показали ничего необычного. Если это случится снова, я попробую MD5, а также посмотрю на них с помощью программы `file`. До тех пор все, что я могу сделать, это предоставить клиенту мою лучшую теорию относительно того, что произошло. На данный момент у меня не так много, хотя. Blackwood 6 лет назад 0
В Windows или Linux имена файлов выглядели одинаково? Помните, что Windows имеет тенденцию подавлять расширения файлов. Если клиент серьезно относился к решению проблемы, он должен был сохранить доказательства. AFH 6 лет назад 1
Именно в Windows имена файлов выглядели одинаково. Расширения файлов были показаны на скриншотах. Blackwood 6 лет назад 0
Я также сообщил клиенту, что если это когда-нибудь случится снова, отправьте файлы непосредственно мне. Blackwood 6 лет назад 0
В одном из файлов может быть скрытое расширение, например, `file.log` и` file.log.lnk` будут выглядеть одинаково в Проводнике, хотя вы увидите разницу в `cmd`. AFH 6 лет назад 2
Я бы определенно запустил `dir / A` на ПК, чтобы проверить наличие скрытых расширений или тому подобное. В следующий раз не сохраняйте файлы, а только файловую систему, создавая изображение (даже `dd` подойдет). user1016274 6 лет назад 0
Это может быть результатом повреждения метаданных файловой системы. Имена файлов и расположения папок - это просто метаданные, которые отслеживает FS, поэтому, возможно, стоит проверить с помощью Chkdsk или fsck. Frank Thomas 6 лет назад 0
учитывая, что это были не просто файлы колясок, я предполагаю, что одна копия каждого из них могла быть символической ссылкой или подобной. Также обратите внимание, что NTFS является закрытым форматом, который не полностью публично задокументирован, и поддержка Linux была изменена. Может быть возможно, что есть часть программного обеспечения с доступом к железу, которая смогла обойти ограничения. Yorik 6 лет назад 0

1 ответ на вопрос

2
xenoid

Я видел, как это происходило: один файл имел обычное «a» (ASCII 0x61), а другой имел очень похожую «кириллицу» (U + 0430). В кириллическом алфавите есть много символов, которые выглядят точно так же, как латинские («е», «о» - два других часто встречающихся) (*).

Один из способов определить проблему (и злодея): dirили lsподать и просмотреть вывод с помощью шестнадцатеричного редактора (в Linux вы также можете использовать более короткое:) ls * | hd.

IIRC также можно использовать символ Unicode "ZERO WIDTH SPACE (U + 200B)" в имени файла.

(*) Я спрятал некоторые в тексте этого ответа ...