Pull to refresh

Сохранение данных в ос windows с помощью ddrescue

Reading time2 min
Views24K
Многие слышали о *nix-утилите GNU ddrescue, предназначенной для сохранения данных, читающихся с ошибками (существует две утилиты с таким названием, но я расматриваю именно GNU-версию). На хабре был топик о ней, рассказывающий основные особенности данной утилиты — копирование данных с записью в лог с последующими попытками считать проблемные места. Но мало кто знает, что её можно использовать в ос семейства windows, под катом я расскажу, как.


Однажды, после неполадок с питанием, старый файловый сервер под управлением ОС windows частично вышел из строя и перестал включаться. Аналогов древнему железу никто искать не стал, поэтому единственное, что от него было нужно — сделать образ зашифрованного раздела, находящегося на аппаратном raid5. К сожалению, другой материнской платы с шиной pci-x, куда можно было бы вставить raid-контроллер, не нашлось, поэтому сделать это надо было на старом сервере. После диагностики и замены вышедших из строя деталей сервер стартанул, но уходил в перезагрузку примерно раз в 5 минут. Было решено использовать ddrescue. На сайте производителя raid нашелся драйвер под SLES11, корректной инструкции к которому, к сожалению, не было и завести его не получилось. Тогда я подумал о том, что собрать ddrescue для windows, для которой драйвер raid у меня имелся, проще, чем заставить работать драйвер raid-контроллера под linux. Начал я с установки cygwin. На официальном сайте лежит веб-инсталлятор, который качает с указанного зеркала нужные файлы. За 5 минут до ребута инсталлятор не успевал скачать всё, что нужно, поэтому качать пришлось на другом ПК, потом скормить дистрибутив инсталлятору. Самый большой сюрприз ожидал меня на этапе выбора дополнительного ПО, устанавливаемого вместе с cygwin — там был скомпилированный пакет ddrescue! Поэтому самому собирать ничего не пришлось.

После установки необходимо узнать, как cygwin нумерует диски, чтобы не затереть не то, что нужно. Все устройства именуются /dev/sd*, где последний символ соответствует номеру диска в «управлении дисками» windows (диск 0 — sda, диск 1 — sdb и т.д.). fdisk/cfdisk вместе с cygwin не поставляется и в предкомпилированных пакетах отсутствует, поэтому для того, чтобы убедиться, что нужный диск значится именно под тем именем, под которым предполагается, можно предпринять следующие шаги:
  • просмотр данных раздела или диска командой less -f (например, можно увидеть сигнатуру NTFS)
  • просмотр размера разделов командой cat /proc/partitions
  • просмотр количества разделов на харде командой ls /dev/sd*

Дальше — дело техники. Был написан однострочный bat-файл со следующим содержимым
c:\cygwin\bin\ddrescue.exe -f -D -v /dev/sdb /dev/sdc log.txt
и положен в автозагрузку. Теперь клонированию не страшны перезагрузки, через несколько часов копия готова.
Все операции проводились в старой ос, в windows vista и новее, возможно, для доступа к дискам необходимо будет отключить UAC/запускать батник от администратора.
Tags:
Hubs:
+3
Comments2

Articles

Change theme settings