Команда dd — серьезный старожил в системах, основанных на UNIX. Ее главное предназначение — это побайтовое копирование. Но благодаря ее гибкости и широчайшему выбору настроек dd можно использовать для массы других вещей: бэкапить диски, восстанавливать данные из бэкапов, переносить MBR и делать еще многие интересные штуки.

Наиболее распространенный вариант использования выглядит примерно так:

dd if=/dev/cdrom of=image.iso

В данном случае синтаксис довольно прост. Параметр if указывает на источник, то есть на то место, откуда копируем. Значение может быть как обычным файлом, так и файлом устройства (/dev/cdrom). Параметр of указывает на файл назначения. Принцип тот же: писать можно как в обычный файл, так и напрямую в устройство.

После выполнения такой команды тулза сделает копию диска с названием image.iso. Но бывает, что диск битый и при появлении ошибки операция записи прервется. Чтобы этого не произошло, можно воспользоваться ключом conv=noerror.

dd if=/dev/cdrom of=image.iso conv=noerror

Он отключает остановку работы программы, когда та наткнется на ошибку чтения. Таким образом, некоторые данные с диска все же можно будет прочитать. Тот же синтаксис применяется для клонирования диска.

dd if=/dev/sda of=/dev/sdb bs=4096

В качестве источника и назначения здесь указываются устройства. Главное — не ошибиться и не перетереть свой же диск. Еще добавился параметр bs. По сути, это то же побайтовое копирование, только с установленным размером буфера 4 Кбайт. В данном случае плохо одно: если на диске в 2 Гбайт занято 100 Мбайт, будет сделан образ в 2 Гбайт независимо от размера данных.

Если необходимо скопировать MBR диска, выполни в консоли следующую команду:

dd if=/dev/sda of=mbr.img bs=512 count=1

А восстановить область можно более простой командой:

dd if=mbr.img of=/dev/sda

Разберем подробнее ключ bs. Он задает количество байтов, которые будут записаны за один раз. Более абстрактно его можно представлять как размер куска данных, которые будут записаны или прочитаны. Параметр count определяет количество кусков, которые должны быть скопированы.

Вот еще один полезный трюк. Если мы хотим забить диск нулями, то можем написать следующее:

dd if=/dev/zero of=/dev/disk

Теперь данные нельзя будет восстановить.

Также dd применяют для разнообразной автоматизации, например для бэкапов по расписанию.



3 комментария

  1. ch3ll0v3k

    11.10.2016 at 19:04

    Эта статья имеет такой же вес как если бы я в лужу перднул.
    Еще даже более еффектно было-бы.

    Вы хоты бы манул на одну страницу переписали. А то как-то на от*****сь, вам не кажется ?
    Просто написать что-бы что-то написать ? Хакеры х****ы

  2. istepan

    27.06.2017 at 17:54

    Спасибо! мне как начинающему очень пригодится.

Оставить мнение