У нас есть приложение, которое работает на выделенном компьютере (работает под управлением 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
папке), которые имели ту же проблему.
Ответы:
Без возможности всесторонне протестировать и воспроизвести проблему, любые предложения были бы просто предположением.
Тем не менее, это определенно звучит как программная проблема. Если это была аппаратная проблема, такая как жесткий диск или память, то факт, что это единственный поврежденный файл, статистически крайне низок. Тем не менее, не мешало бы проверить оборудование. Запустите memtest86, чтобы проверить память машины на наличие неисправностей. Кроме того, запустите scandisk на жестком диске и проверьте на наличие ошибок. Еще лучше было бы заменить жесткий диск твердотельным диском на случай, если вибрация на заводе вызовет ошибку.
Попробуйте открыть поврежденный файл с шестнадцатеричным редактором, как этот один . Проверьте и посмотрите, доступны ли какие-либо данные для чтения и восстановления. В качестве меры безопасности создайте сценарий или используйте программу, которая выполняет резервное копирование этого файла с частотой, которую вы считаете приемлемой.
В конце я бы поговорил с производителем программного обеспечения, так как кажется, что программа записывает поврежденные данные в файл, тем самым делая его нечитаемым.
источник
HxD
( mh-nexus.de/en ) в переносном режиме. Открытие поврежденного файла приводит к ошибкеStream read error.
. Любой другой файл, который я пробовал, работал нормально.