В поисках пропавшего раздела
АрхивСофтерраСитуация, до боли знакомая многим: по каким-либо причинам становится невозможным доступ (то есть чтение и копирование файлов) к жесткому диску как таковому, либо к определенному разделу диска, либо к отдельным каталогам раздела.
Ситуация, до боли знакомая многим: по каким-либо причинам становится невозможным доступ (то есть чтение и копирование файлов) к жесткому диску как таковому, либо к определенному разделу диска, либо к отдельным каталогам раздела. Причины возникновения столь неприятной ситуации могут быть разными, но все они условно делятся на две категории: невозможность доступа на физическом уровне и невозможность доступа на логическом уровне.
Глубинная причина невозможности доступа на логическом уровне - это использование на одном компьютере разделов с различными файловыми системами. Все, что ни делается во благо человечества, всегда имеет обратную сторону медали, и случай с файловыми системами не является исключением: из чистой MS-DOS (FAT16) невозможен доступ к FAT32-разделам диска (без использования специализированного программного обеспечения), из Win98 - к NTFS-разделам, из WinXP - к Linux-разделам (с той же оговоркой). Тут-то консоль восстановления и может сыграть решающую роль в спасении данных.
Вот реальный случай из жизни, который и подвиг вашего покорного слугу написать эту статью. На компьютере установлены три операционные системы: основной раздел - Windows 98 (в качестве загрузочного раздела Windows XP Pro), первый логический диск дополнительного раздела - Windows XP Pro, второй логический диск дополнительного раздела - Linux Mandrake 9.0, третий логический диск дополнительного раздела - Linux swap, четвертый логический диск дополнительного раздела - данные. Причины отказа от Linux роли здесь не играют, поэтому скажу лишь, что операцию решено было начать с удаления файла подкачки Linux (400 Мбайт). Система восприняла мои манипуляции болезненно и отреагировала самым коварным образом: стала считать разделом Linux swap последний (к слову, самый большой) раздел винчестера со всеми данными. Таким образом, доступ к данным на физически совершенно здоровом разделе оказался невозможным из всех операционных систем: Partition Magic 8.0 распознал раздел как Linux swap и скромно отказался выполнять какие-либо действия, а попытки увидеть что-нибудь из Linux вообще не имели никакого смысла! Оставалась единственная соломинка, за которую я и ухватился - консоль восстановления. И она оправдала мои надежды на все 100%. Конечно, в процессе работы с консолью были моменты, когда, наткнувшись на очередной "элемент обеспечения безопасности" разработчиков из Microsoft, просто опускались руки, но это, смею вас уверить, от излишнего рвения, торопливости и не особо внимательного чтения встроенной справки Windows XP. Теперь обо всем по порядку.
Запустить консоль восстановления можно двумя способами: либо с установочного компакт-диска с помощью программы установки Windows XP, либо в качестве одного из вариантов загрузки в меню доступных операционных систем при включении компьютера. Второй способ предпочтительнее, поскольку не требует наличия установочного диска при каждом запуске консоли и позволяет избежать копирования системных файлов на первом этапе установки ОС. Чтобы установить консоль восстановления в виде варианта загрузки, необходимо инсталлировать ее на локальный компьютер. Для этого достаточно во время работы Windows XP вставить установочный компакт-диск, нажать кнопку "Пуск", выбрать команду "Выполнить" и ввести следующую строку:
D:\i386\winnt32.exe /cmdcons,
где D: - привод компакт-дисков. После того как программа установки завершит работу, в корне загрузочного раздела появится каталог \cmdcons объемом чуть меньше 8 Мбайт. Быстро, удобно, а главное, консоль восстановления теперь всегда под рукой.
Есть один важный нюанс, знание которого поможет в дальнейшем избежать потери немалого количества нервных клеток и времени. В консоли восстановления поддерживаются четыре переменные среды, и присутствует команда Set, использующаяся для их отображения и установки (см. таблицу).
Однако по умолчанию все переменные среды имеют значение false. Соответственно, все команды работы с файлами обеспечивают доступ только к файлам, находящимся в системных папках операционной системы, на съемных носителях или в корне любого раздела диска, и запись на съемные носители запрещена. Кроме того (цитирую справку Windows XP): "Команда Set является дополнительной командой, которая должна использоваться с шаблонами безопасности… По умолчанию команда Set отключена. Для включения команды Set используйте шаблоны безопасности. Атрибут Включение команды Set для консоли восстановления находится в дереве консоли в разделе Политика Х Локальный компьютер Х Конфигурация компьютера Х Конфигурация Windows Х Параметры безопасности Х Локальные политики Х Параметры безопасности". Звучит пугающе. Кто же хранит свои файлы в системных папках и в корне диска? Да и куда восстанавливать файлы? В корень диска? В системный каталог? Поэтому, чтобы иметь доступ ко всем файлам во всех папках диска и записывать файлы на съемные носители, придется настроить локальные параметры безопасности. Быстрый путь для выполнения этой операции: нажать кнопку "Пуск", выбрать команду "Выполнить" и ввести строку:
secpol.msc /s
Далее необходимо включить политику "Консоль восстановления: разрешить копирование дискет и доступ ко всем файлам и папкам" (рис. 1). При желании можно включить и политику "Консоль восстановления: разрешить автоматический вход администратора". Это избавит вас от ввода пароля администратора в каждом сеансе работы с консолью.
Итак, давайте попытаемся восстановить на диск С: три MP3-файла общим объемом 134 Мбайт, расположенных в папке \Эдвард Радзинский, и один xls-файл из папки \films на дискету с как бы пропавшего диска E:.
По всем формальным признакам пример показательный: файлы расположены не в корне диска и не в системной папке, имена набраны кириллицей с пробелами (не очень страшно, но помучаться придется), один из файлов нужно копировать на дискету, важность высокая (только что оцифрованные выступления Эдварда Радзинского - ценители согласно кивают головами).
Из трех десятков команд, доступных в консоли восстановления, мы задействуем только семь, но эта "великолепная семерка" обеспечит нас всем необходимым в работе на ниве спасения нужных файлов.
Запускаем консоль восстановления (попутно отмечу, что выбрать языковую раскладку можно только до загрузки консоли и в процессе работы ее изменить нельзя), вводим номер операционной системы из предлагаемого списка и, если нужно, пароль администратора.
Первая команда, которой мы будем вынуждены воспользоваться - это Set. C ее помощью настроим переменные среды консоли:
set allowallpaths = true
set allowremovablemedia = true
set allowwildcards = true
Эти три команды следует вводить в каждом сеансе работы с консолью, так как после выхода переменные среды устанавливаются в состояние по умолчанию, то есть в false (за более подробным описанием команд отсылаю читателей к встроенной справке Windows XP).
Переходим в нужную папку с помощью команды ChDir или Cd (вывод имени текущей папки или переход в другую папку). Займемся сначала копированием списка фильмов (films.xls) на дискету:
cd e:\films
Отметим, что пробелы рассматриваются как разделители, поэтому имя папки, содержащее пробелы, следует заключать в кавычки.
Чтобы удостовериться, что файл находится в выбранной папке, воспользуемся командой Dir (вывод списка файлов и подпапок в папке):
dir - вызов из текущей папки;
dir e:\films - вызов из любой папки;
dir e:\films\films.xls - вызов из любой папки; выводим сведения только о файле films.xls.
Результатом выполнения команды Dir будет список папок и файлов в текущей папке. Для каждого файла выводится расширение имени файла, размер в байтах, дата и время последнего изменения файла и указанные атрибуты (см. таблицу), если атрибут доступен.
Строго говоря, если известен путь к файлу, и мы уверены в том, что он действительно там находится, использовать команды Сd и Dir не обязательно.
Копирование файла на дискету в папку \films выполним с помощью команды Copy (копирование одного файла в другую папку):
copy e:\films\films.xls a:\films
К сожалению, эта команда не поддерживает подстановочные символы (* и ?), поэтому каждый файл придется копировать отдельно.
Теперь выполним ту же последовательность команд для MP3-файлов:
cd “e:\Эдвард Радзинский”
И вот тут нас ждет неприятный сюрприз: эту команду ввести не удастся, так как переключения языковой раскладки в консоли не предусмотрено. Как же быть? Здесь на помощь придет одна из самых полезных и часто используемых команд консоли восстановления: Batch (выполнение команд, указанных в текстовом файле). В этом файле могут быть указаны любые команды, поддерживаемые консолью, за исключением самой Batch. Подготовим текстовый файл, результатом запуска которого будет выполнение всех операций, предусмотренных нашим примером (рис. 2). Теперь запускаем консоль и выполняем одну из следующих команд:
batch c:\bat1.txt
batch c:\bat1.txt c:\bat2.txt
В первом случае результаты выполнения команд, перечисленных в файле bat1.txt, будут выводиться непосредственно на экран монитора. Во втором - будут записаны в файл bat2.txt (рис. 3).
Теперь можно воспользоваться командой Exit (закрытие консоли восстановления и перезапуск компьютера). После перезагрузки мы обнаружим все файлы в соответствующих папках.
Последняя команда, о которой стоит упомянуть - Help (вывод справки о командах консоли восстановления). Получить в консоли справку о любой команде можно двумя способами: указав ее имя после команды Help или введя имя с ключом /?:
help copy
copy /?
При этом на экране появятся сведения о команде, включая допустимые параметры.
При выполнении определенных рекомендаций консоль восстановления Windows XP является достаточно гибким и подчас единственным способом восстановления файлов в случае потери доступа к разделам жесткого диска. Отмечу также, что мы рассмотрели только семь команд из трех десятков. Напрашивается вывод: потенциал консоли гораздо больше. Но об этом, возможно, в другой раз.
- Из журнала "Компьютерра"