Обнаружить и восстановить поврежденный файл

2

У нас есть приложение, которое работает на выделенном компьютере (работает под управлением Windows Embedded на NTFS-диске) на заводе. В редких случаях «поврежденный файл» останавливает работу программного обеспечения. Удаление поврежденного файла решает проблему ... но все данные в файле теряются.

Пока что воспроизвести эту проблему в лаборатории оказалось невозможным. Нам наконец удалось вернуть ПК, который демонстрирует проблему. До сих пор все известные экземпляры «поврежденного файла» были INI-файлами, которые использует наше программное обеспечение. Когда я пытаюсь просмотреть файл (в блокноте), отображается следующая ошибка:

Ошибка отображается Блокнотом

Попытка скопировать файл в проводнике Windows для автономного анализа приводит к следующему сообщению об ошибке:

Ошибка при попытке скопировать файл

Атрибуты файла выглядят нормально в командной строке. Попытка скопировать файл вручную copy mStats.ini D:, генерирует эту ошибку:

Ошибка отображается в командной строке

Загрузка Windows в безопасном режиме не помогает (файл все еще поврежден и не подлежит восстановлению). Похоже, это указывает на поврежденную запись в таблице основных файлов Windows NTFS (MFT). Остальная часть системы, кажется, не затронута. Удаление файла позволяет полное восстановление.

  • Что может быть причиной этого?
  • Можно ли восстановить данные или исправить MFT?
  • Возможно ли воспроизвести проблему такого типа (программно или вручную)?
  • Есть ли какой-нибудь общий совет для чтения / записи файлов, чтобы гарантировать, что такого рода вещи не произойдут?

ОБНОВЛЕНИЕ 1

Основываясь на предложении здесь, я бежал chkdsk C: /Vиз командной строки, которая возвратила:

\PATH\mStats.ini
Windows found errors on the disk, but will not fix them
because disk checking was run without the /F (fix) parameter.
\PATH\mStats.ini  first allocation unit is not valid. The entry will be truncated.
\PATH\mStats__.ini
\PATH\mStats__.ini  first allocation unit is not valid. The entry will be truncated.

Файлы все еще повреждены. Я занят повторным запуском команды с /Fфлагом.

ОБНОВЛЕНИЕ 2

После запуска chkdskс /Fфлагом файлы теперь исправлены. Это не очень хорошая новость, это звучит, потому что теперь у меня нет компьютера с поврежденными файлами! В журнале событий Windows> Приложения появляется следующая запись:

\PATH\mStats.ini  first allocation unit is not valid. The entry will be truncated.
\PATH\mStats__.ini  first allocation unit is not valid. The entry will be truncated.

Было также около дюжины других файлов (в основном в Temporary Internet Filesпапке), которые имели ту же проблему.

AlainD
источник
Кроме того, вы хотите взглянуть на инструменты, которые могут считывать необработанные данные с диска, вместо того, чтобы полагаться на Windows Explorer, чтобы открыть файл для вас - таким образом, вы по крайней мере узнаете, есть ли что- нибудь разумное в файле, или это полный мусор.
djsmiley2k
Ни одно приложение, которое я пробовал до сих пор, не смогло прочитать что-либо в файле (включая шестнадцатеричные редакторы). Это, вероятно, ошибка программирования. Разработчики в курсе, но пока никто не нашел надежного способа воспроизвести ошибку! Каждый тест, который мы пробуем, просто работает. На данный момент у меня эта единственная машина возвращена от заказчика. Я мог бы просто удалить поврежденный файл, но мы больше не увидели бы проблему.
AlainD

Ответы:

0

Без возможности всесторонне протестировать и воспроизвести проблему, любые предложения были бы просто предположением.

Тем не менее, это определенно звучит как программная проблема. Если это была аппаратная проблема, такая как жесткий диск или память, то факт, что это единственный поврежденный файл, статистически крайне низок. Тем не менее, не мешало бы проверить оборудование. Запустите memtest86, чтобы проверить память машины на наличие неисправностей. Кроме того, запустите scandisk на жестком диске и проверьте на наличие ошибок. Еще лучше было бы заменить жесткий диск твердотельным диском на случай, если вибрация на заводе вызовет ошибку.

Попробуйте открыть поврежденный файл с шестнадцатеричным редактором, как этот один . Проверьте и посмотрите, доступны ли какие-либо данные для чтения и восстановления. В качестве меры безопасности создайте сценарий или используйте программу, которая выполняет резервное копирование этого файла с частотой, которую вы считаете приемлемой.

В конце я бы поговорил с производителем программного обеспечения, так как кажется, что программа записывает поврежденные данные в файл, тем самым делая его нечитаемым.

Keltari
источник
Предложенный шестнадцатеричный редактор не устанавливался (повторяющиеся сбои), поэтому я попытался HxD( mh-nexus.de/en ) в переносном режиме. Открытие поврежденного файла приводит к ошибке Stream read error.. Любой другой файл, который я пробовал, работал нормально.
AlainD