среда, 14 сентября 2011 г.

Лечение больного внешнего диска

Недавно мой товарищ попросил полечить внешний USB диск. На полтерабайта.

Подключил для начала под Федорой 15. Появилось сообщение об ошибке в ФС NTFS и рекомендация запустить под Windows программу для лечения ФС CHKDSK с обязательным параметром /F.

Переподключил флеш-диск на систему с ОС Windows и в интерпретаторе запустил программу с ключами:
chkdsk G: /F /R /X
Где:
/F - выполнение проверки на наличие ошибок и их автоматическое исправление;
/R - выполнить поиск поврежденных секторов и восстановить их содержимое. Требует обязательного использования ключа /F;
/X - в случае необходимости выполнить отключение тома перед его проверкой. После отключения все текущие дескрипторы для данного тома будут недействительны. Требует обязательного использования ключа /F;

Программа работала долго, все-таки 500 гигабайтный диск.
Результат после первого прохода - не обнадеживающий. Объектов ФС так и не стало видно. Тем не менее, программа все же выполнила некоторые действия по "лечению" файловой системы, это было видно по листингу вывода работы программы.


Рассудив, что положительным является 2 вещи - и Линукс и windows определили тип файловой системы -- а также то, что CHKDSK все же выполняла какие то действия над ФС, решено было запустить утилиту еще раз.

После повторного запуска утилиты CHKDSK с теми же ключами, каталоги и файлы внешнего диска стали доступны.

Но.
Возникла другая проблема. Часть каталогов на диске стала иметь атрибут HIDDEN - т.е. "скрытый".
Сталкивался уже с этим, когда однажды лечил флешку после вирусной атаки. В тот раз нашел в сети утилиту, которая восстанавливала нужные атрибуты для каталогов. Если не подводит память, утилита была от какого-то француза. С сожалением подумал, что зря не записал адрес сайта с утилитой - или хотя бы её название.
Решил поискать в сети, и нашлось решение, которое и публикую здесь. Решение отличное от предыдущей утилиты. Вот оно:

Нужно создать текстовый файл с текстом
dir /AS /B > list.txt
FOR /F "eol=# tokens=1* delims=:" %%i in (list.txt) do (
attrib -s -h -r "%%i"
)
pause

дать файлу расширение ".bat" и запустить из корня флешки или внешнего диска. Скрипт установит необходимые атрибуты на каталоги и результат работы выведет в файл "list.txt".

Решение взято здесь.

UPDATE
Вот ссылка на программу, меняющую атрибуты.
А вот здесь - платная программа, с триальным сроком.