Стандартная ситуация — на сервере начал умирать диск, появились первые беды, система с трудом встает после ребута. Но переустанавливать все заново очень долго, да и зачем? Гораздо проще сделать полный клон диска или испорченного раздела. И в этом поможет dd. Программа dd идеально подойдет там где нужно сделать точную копию раздела/слайса диска. Она сектор за сектором копирует данные из источника (параметр if ) в пункт назначения, если так можно выразиться (параметр of ). Чтобы понять как просто пользоваться программой давайте сделаем это на практике.
# dd if=/dev/hda of=/dev/hdb conv=noerror,sync
Команда выше сделает точную копию раздела /dev/hda в разделе /dev/hdb. То есть мы «отзеркалировали» /dev/hda. После conv= мы можем указать ряд параметров:
* noerror — продолжать копирование не обращая внимание на bad-блоки и прочие ошибки
* sync — поврежденные или отсутствующие данные во входном буфере на выходе будут заменены на нули. Опция замедляет работу команды dd, но для более корректного образа стоит воспользоваться ею.
# dd if=/dev/hda3 of=/var/backup/hda3.img
Этой командой мы записали раздел /dev/hda3 в бинарный файл hda3.img. Теперь его можно перенести на другой сервер и развернуть в точную копию/dev/hda3. Только учтите один минус dd — программа копирует данные по секторам и ей все равно есть на этом участке диска данные или нет, будет воссоздана точная копия и размер будет точно такой же! То есть если раздел /dev/hda3 имеет объем в 5 Гб а занят на нем только 1 то файл hda3.img будет весить 5 Гб. Восстановить раздел из образа также просто как и создать:
# dd if=/var/backup/hda3.img of=/dev/hda3
Ну и напоследок сделаем копию нашей MBR (Master Boot Record). MBR – это первый сектор на жестком диске содержащий таблицу разделов и запись, с какого раздела загружаться. Иногда требуется восстановить MBR из резерва.
# dd if=/dev/hda1 of=/var/backup/mbr.dump bs=512 count=1
Команде dd мы просто передали параметры bs и count, этим указав какой объем данных мы хотим скопировать.
* bs — block size, размера блока который мы хотим скопировать
* count — количество bs
Мы ведь уже знаем, что MBR находится в первых 512 байтах (1-й сектор). Теперь восстановим MBR из резервной копии
# dd if=/var/backup/mbr.dump of=/dev/hda1 bs=512 count=1
Размер сектора можно узнать так:
# fdisk -l /dev/hda1
а как будет выглядеть команда ,чтобы скопировать диск целиком вместе с мбр, чтобы он стал загрузочным и полностью аналогичным оригиналу?