Девятый бит: Блог кафедры АСОИУ ОмГТУ

Момент, когда система контроля версий бессильна

SVN(Альтернативное название: Система контроля версий!? только на устройстве с автономным питанием.)

Представьте ситуацию: вы пишете диплом/диссертацию, и вдруг компьютер вырубается…

Недавно, работая в Visual Studio над частью диссертации в доме «моргнул» свет. Причем моргнул так, что от этого не спасла система активной коррекции мощности (APFC) в БП, и компьютер выключился. Стоит заметить, что в этот момент проект (в VS) сохранялся, и уже начинал собираться.

Далее комп нормально включился, Visual Studio нормально открылась, но контроль версий отвалился. Решив разобраться с контролем версий позже, открыл самый главный файл проекта «confidential.cpp», и он оказался пуст!

Noooooo!

Спустя неделю пребывания в состоянии аффекта (вспомнив, что XFS раньше при сбое питания обнулял открытые файлы:mrgreen: открыл файл в FAR (HEX вид), оказалось, что файл не пуст, а состоит из нулей.
Это могло означать, что испортилась файловая запись в MFT, поэтому решил поискать файл по содержимому (благо, в начале всех исходников есть текст NDA) в режиме прямого доступа к разделу диска.

Скачав WinHEX Eval. и открыв раздел диска в режиме RO (только чтение), решил вначале не искать файл по содержимому, а посмотреть на него через менеджер файлов WinHEX’а. И кликнув на «confidential.cpp» в менеджере файлов, он открылся (в HEX виде) целым и невредимым!
Оказалось, что у всех файлов, которые сохранялись в момент отключения питания, появился атрибут ‘разряженный файл’ (sparse) и несколько других атрибутов.

Переводить WinHEX в режим RW (чтение и запись) не хотелось, поэтому вместо правки файловой записи в MFT, просто сохранил «confidential.cpp» на другой диск:

Recover/Copy...

Нажать Recover/Copy...

На скриншоте видны атрибуты файлов, вот что про них написано в справке WinHEX:

«Partial initialization» means that according to the NTFS file system the so-called valid data length is smaller than the logical file size, i.e. the data at the end of the file is undefined, similar to file slack has nothing to do with the file, and was stored on the disk at that location before. You can see the valid data length of the file in File mode in the Info Pane, and the undefined area is highlighted in a different color.

Хорошо, что действие происходило на обычных HDD дисках, если бы это был SSD с включенным TRIM, то шансы на успешное восстановление данных уменьшились бы.

You must be logged in to post a comment.