Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> dd : бэкапируем windows

Клонирование разделов windows с помощью загрузочного диска FreeBSD

Автор: Grishun_U_S.


Ситуация обычная, сотрудница нашей фирмы попросила «посмотреть домашний компьютер», который «не включается, сын что - то натворил». Прибыв на место определил что винда не грузится ни в обычном режиме ни в безопасном. Сошлись на том, что вытаскивать данные не будем, а просто переустановим с форматированием. Ребенок учится в средних классах школы и естественно ставит все проги подряд особо не задумываясь. Ограничивать его в любознательности не стоит, пусть учится, тем не менее я понял что аналогичная ситуация (когда система будет запорота загадочным образом) может возникнуть совсем скоро и мы будем к этому не готовы, т.е. все что я смогу сделать — опять все форматировать, ставить винду, дрова и проги. Это не устраивало и я вспомнил как один знакомый говорил о рецепте «2х винчестеров» — образ свежеустановленной системы снимается утилитой типа акрониса (Acronis True Image) или Нортона Госта (Norton Ghost) на второй винчестер, который затем отключается. В дальнейшем, когда наступит время «ч» можно быстро развернуть систему из образа. Первый вопрос возник после изучения нового Нортона то ли двенадцатой то ли четырнадцатой версии, который работал исключительно под венду и кроме того, требовал установки MS NetFramework. Хотелось чего - то доброго, чистого, не требующего установки, независящего от типа файловой системы и желательно бесплатного. И такое нашлось. Это dd. Второй вопрос, вернее не совсем вопрос, а сразу решение, возникло после оценки размера установленной винды ХР и всех прог — чуть больше 3Гб, а значит образ влезет на DVD болванку и маме не потребуется отрывать лишнюю тысячу рублей из семейного бюджета на покупку дополнительного HDD.
Надо сказать, что утилита dd работает на низком уровне, копируя информацию с носителя по секторам. В этом ее преимущество — не зависит от файловой системы и недостаток — копирует все подряд без разбору. Т.е. если имеем винчестер размером 10Гб то и получим образ в 10Гб. Винчестер 100Гб — образ 100Гб. Естественно такой образ можно пожать архиватором до приемлемого размера, но только если на остальное пространство будут записаны однородные данные, например нули. Что касается файловой системы ntfs, то при удалении файла в ней не происходит физического удаления — стирается только заголовок файла, сами данные остануться нетронутыми до тех пор пока на их место не будет записан другой файл. Тоже самое происходит при форматировании — очищается только служебная область диска. Честно говоря несколько лет назад я был сильно удивлен сначала отформатировав по ошибке диск с данными, а потом восстановив абсолютно всю информацию с него простой утилитой. Теперь представим что на жестком на диске размером 320Гб 150 Гб занято музыкой, мы форматируем его в ntfs, ставим винду, и видим что досутпно 317Гб. Все верно, но если пытаться сжимать образ этого диска, то мы будем сжимать фактически 150Гб, т.к. данные от музыкальных файлов как там были до форматирования так останутся после. Поэтому нам нужно сначала записать однородные данные на весь этот диск (забиваем нулями), а только потом уже форматировать его и ставить винду.

Итак, приступим :
В первую очередь нам потребуется LiveCD с любым Linux (на котором есть утилита dd и gzip) или FreeBSD (я использовал это) качаем и пишем на болванку. Выбираем в биосе загрузку с CD и загружаемся с него



Далее выбираем пункт меню «Fixit»



и выбираем пункт «use the "live" filesystem CDROM/DVD»



Должно появиться приглашение консоли

Fixit#

получаем список дисков в системе :

Fixit# dmesg | grep ad

например, у меня было 2 диска :
ad0 — диск на который я собираюсь ставить ОС windows
ad4 — диск куда я буду сохранять сжатый образ

Забъем ad0 нулями (все данные на диске будут уничтожены):
Fixit# dd bs=8M if=/dev/zero of=/dev/ad0

Для проведения операции обнуления НЕ нужно монтировать диск ad0.
bs=8M устанавливает размер буфера для этой операции. Рекомендуется ставить размер буфера равным размеру кэша жесткого диска. После того, как dd отработает он выведет затраченное время. У меня этот процесс занял 1,5 часа (винчестер 320Гб).
Теперь самое время для установки windows на чистый HDD. Также поставим необходимые драйвера и программы, увлекаться слишком не стоит, иначе наш образ не поместится на DVD болванку.
После того как все установлено, подключаем HDD на который мы будем сохранять запакованный образ, загружаемся с live cd и выбираем консоль восстановления Fixit по описанной выше процедуре.
Создаем каталог для монтирования hdd с будущим образом :

Fixit# mkdir  /mnt/hdd

монтируем ad4 в /mnt/hdd

Fixit# mount /dev/ad4 /mnt/hdd (ТРЕБУЕТ ПРОВЕРКИ)

но я не монтировал вручную, а сделал все через

Fixit# sysinstall



(пункты меню Configure, Fdisk/Label)

Снимаем образ и архивируем его "на лету"

Fixit# dd bs=8M if=/dev/ad0 | gzip -c > /mnt/hdd/image.gz

Обратите внимание, что output file (of) в параметрах не пишем, вместо этого перенапрявляем стандартный вывод на вход gzip, которому ключем -с указываем выводить результат работы на консоль и тут же перенапрявляем (>) вывод в файл /mnt/hdd/image.gz . Эта операция заняла около трех часов, в результате получился архив объемом 2,5Гб.
Теперь у нас есть образ системы. Встроим его в загрузочный *.iso файл. Для этих целей я использовал проприетарный софт Ultra ISO, которая умеет редактировать ISO файлы. Открываем 7.0-RELEASE-i386-livefs.iso, создаем в нем каталог /usr2 и подкладываем туда файл образ, который сняли на прошлом шаге. Сохраняем получившийся образ. У меня получился 3 с небольшим Гб. Пишем его на ДВД и проверяем : загружаемся с него, выбираем консоль восстановления Fixit и смотрим есть ли файл image.zg в каталоге /usr2

Fixit# ls -lh /usr2
-rw-r--r--  1 root  wheel      2.5G Feb 24 21:53 image.gz

Все. Теперь можно будет в случае чего быстро восстановить систему загрузившись в Fixit и выполнив команду :

Fixit# gunzip -c /usr2/image.gz | dd bs=8M of=/dev/ad0

(в момент выполнения этой команды ad0 должен быть отмонтирован)



размещено: 2008-06-27,
последнее обновление: 2008-06-27,
автор: Grishun_U_S


johndau, 2008-06-27 в 13:56:32

как вариант конечно интересный, но весьма длительный (3 часа! на создание 3Гб образа пустой винды -это черезчур) и неудобный, обычный юзер не сможет повторить the same, если ему понадобиться новый образ...Автору спасибо за статью, но для данной задачи мой совет - Используйте Acronis True Image, упомянутый автором - загружаетесь c CD|DVD|Flash c установленным Acronis True Image -> делаете образ любого раздела или всего винчестера в целом, (у меня за 14 минут создаеться 4Gb-ый образ раздела C: , при этом исходный раздел C: ~27Gb из них занято файлами 17Gb ,) - интерфейс программы понятен всем - аля виндовое окошко с меню и визардами. Разворачивается образ тоже за 14 минут. и P.S. не храните документы на диске C:. тогда вы "ничего" не потеряете после восстановления из образа.

Евгений, 2008-06-27 в 19:17:45

Интересно!Но тоже самое только
http://www.9down.com/Hiren-s-BootCD-9-0-Incl-Keyboard-Patch-9670/
Грузимся,ГХостом делаем образ сразу на DVD-RW.Затем с полученной болванки клепаем любое количество Виндов.

blkdog, 2008-06-27 в 21:00:10

я для таких целей всегда пользуюсь   g4u

JavaScript, 2008-06-28 в 1:08:44

3 часа - перебор, Norton Ghost делает это за 5 минут

http://www.clonezilla.org/ - неплохой вариант

LML, 2008-07-01 в 17:23:44

Вы дорогие товарищи не догнали суть статьи -  Acronis, Norton Ghost и пр. проприетарный софт!!! Вам предложили способ создания образа винды с использованием стандартных команд *nix, хватит пиратством заниматься!

Xtremist, 2008-07-03 в 22:22:02

За статью спасибо пригодиться, тока зачем нулями все тереть 1,5 часа?

Повеселился от души: представил девицу упражняющуюся с dd :), и монтирующую разделы, конечно если она не работает одмином или на досуге unix   не увлекается.
Если уж вы поборник беспиратного софта, то для винды существуют так называемая утилита от Seagate
MaxBlast (даже на русском)

http://www.seagate.com/www/en-us/support/downloads/

По сути это тот же акронис :), может тока урезанный

vvik, 2008-07-07 в 6:38:48

Вы чё ребята, время - деньги, чем больше трудишься тем больше платит, тока ещё нужно умное лицо незабывать строить.

midda2, 2008-07-09 в 15:07:46

Как платят так и трудимся. Если оплаты не хватает на Ghost и Ко, то пусть даже не жалуются на скорость работы dd. Хотя dd ни в чем не виноват, а честно выполняет несвойственную ему работу.

PS Воровать пиратный софт нехорошо, это растлевает нравственность...

mavka, 2008-08-08 в 14:36:55

Если нужно обнулить свободное место на диске ПОСЛЕ установки системы, то можно воспользоваться этим:
http://www.feyrer.de/g4u/#shrinkimg

Touch, 2008-09-23 в 19:20:35

А Ultra ISO таки заюзал ))) От жеж поборник свободного ПО )))

Grishin_U_S, 2008-09-23 в 19:38:17

Спецом для тебя
http://www.freebsdwiki.net/index.php/Mounting_ISOs_under_FreeBSD_5.x

уже, 2008-11-02 в 2:59:32

Товaрищщи! Это поля для ввода комментaриев к стaтье, а не для вопросов. Сюда пишите найденные бaги, или какие-то фичи  :)
Для вопросов есть форум!

riv1329, 2008-11-20 в 1:54:38

Так ведь есть же и ntfs-dump - тошда можно не сжимать, копирует только актуальные данные.

Zueuk, 2008-12-07 в 15:06:09

Интересно было бы вместо UltraIso узнать свободную альтернативу. А так, статья хорошая.

dekloper, 2009-05-26 в 12:32:24

слабоактуальная статья...
мы чё ДэДэ пользовать не умеем штоль...?!!
все то же самое можно сделать, загрузив ядро с неважно какова носителя, хоть по сети с нфс, и тудаже (в сеть) слить...

проблема в другом!
как избежать даунтайма??
вот сюда нада думать..!

Shell, 2009-08-02 в 22:14:35

Интересная статья, спасибо автору))) По моему тут ошибка:
Fixit# gunzip -c /usr2/image.gz | dd bs=8M of=/dev/ad0
Заменил of на if и всё пошло...
Тестил на Frenzy 1.1
P.S. А сколько времени должен распаковываться архив в 1.5Gb, снятый с харда в 320Gb???

ufs, 2011-01-02 в 1:24:18

А еще можно с hdd на hdd:
dd if=/dev/ad4 of=/dev/ad0 bs=1M conv=noerror,sync

анон, 2011-03-23 в 14:53:17

а можно с двумя лайвовыми болвасиками с dd и netcat: на оригинальной системе: dd if=/dev/sdX bs=16065b | netcat <REMOTE_IP> 1234. На целевой системе: netcat -l -p 1234 | dd of=/dev/sdY bs=16065b. инфа 100%

Евгений, 2011-06-15 в 12:35:40

Да перебор, слишком все долго и муторно! В некоторых случаях G-host или njn;t Арконис Рулит :) рулил и будет рулить ...

Zueuk, 2011-06-26 в 14:10:11

Евгений
А покажите-ка ваши лицензии оффициально купленного Ghost или Акрониса. Как нет? Значит Вы пользуетесь пиратским ПО? И пропагандируете это на ресурсе, посвященном свободному ПО? Вы смешны.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1419 секунд
Из них PHP: 46%; SQL: 54%; Число SQL-запросов: 81 шт.
Исходный размер: 38366; Сжатая: 10322