Собственно, команда:

dd if=/dev/cdrom of=cdimage.iso bs=2048

/dev/cdrom - файл-устройство компакт-дисковода
cdimage.iso - имя файла образа. Если указан не полный (или относительный) путь, то будет создан в текущем каталоге
2048 - размер кластера на компакт-диске. При указании bs=2048 считывание данных с диска и запись в файл будет производиться блоками по 2048 байт (2 килобайта). По умолчанию ibs = obs = bs = 512 и в данном конкретном примере его можно было вообще не указывать.

Также с помощью простой команды dd можно сделать массу полезных вещей. Например:

Работа с MBR (Master Boot Record)

MBR занимает первые 512 байт жёсткого диска. В первых 446 байтах находится системный загрузчик, остальные байты - разметка диска (первичные разделы).

Копирование таблицы разделов с диска /dev/sda на диск /dev/sdb (может быть полезно при создании RAID):

dd if=/dev/sda of=/dev/sdb bs=1 count=64 skip=446 seek=446

Резервное копирование MBR с диска /dev/sda в файл mbr_sda.iso:

dd if=/dev/sda of=mbr_sda bs=512 count=1

или, что по сути то же самое:)

dd if=/dev/sda of=mbr_sda bs=1 count=512

Удаление MBR (затирание нулями):

dd if=/dev/zero of=/dev/sda bs=512 count=1

Удаление MBR (затирание произвольными значениями, сложнее восстанавливать):

dd if=/dev/random of=/dev/sda bs=512 count=1

Восстановление из файла mbr_sda.iso (с полной копией MBR) только загрузчика на диск /dev/sda:

dd if=mbr_sda of=/dev/sda bs=446 count=1

Работа с разделами диска

Здесь стоит обратить внимание, что чем больше значение bs, тем быстрее происходит копирование. При слишком большом bs для операций может не хватить памяти.

Резервное копирование всего раздела /dev/sda1 в образ sda1.iso (размер образа будет равен размеру партиции!):

dd if=/dev/sda1 of=sda1.iso

Резервное копирование всего раздела /dev/sda1 в образ sda1.iso.gz со сжатием gzip:

dd if=/dev/sda1 | gzip>sda1.iso.gz

Восстановление партиции /dev/sda1 из сжатого образа sda1.iso.gz:

gzip -cd sda1.iso.gz | dd of=/dev/sda1

Затирание раздела /dev/sda1 нулями (остаётся небольшая возможность восстановления содержимого):

dd if=/dev/zero of=/dev/sda1

Затирание раздела /dev/sda1 нулями и единицами в случайном порядке (практически без шансов на восстановление):

dd if=/dev/urandom of=/dev/sda1

Кстати, /dev/random и /dev/urandom - это два разных устройства. Первое - качественнее, второе - быстрее.

При встрече с ошибкой чтения программа dd по умолчанию прекращает работу. Поэтому, если диск начал «сыпаться» и на нём содержатся ошибки, есть смысл воспользоваться ключом conv=sync,noerror. При этом dd будет игнорировать ошибки чтения блока (заданного параметром bs), и в пункт назначения вместо него будет записывать нули. bs должен быть меньше либо равен размеру кластера диска, чтобы не потерять неиспорченные данные.

Все перечисленные команды годятся для работы не только с разделами (/dev/sda1), но и с целыми дисками (/dev/sda)

Восстановление намагниченности поверхности диска (актуально, если файлы у вас хранятся годами без перезаписи):

dd if=/dev/sda of=/dev/sda

Дополнительно

Варианты расшифровки команды dd: disk dump, direct data, destroy disk.


dd не выводит прогресс операции. Для его просмотра надо ввести в другой консоли:

killall -SIGUSR1 dd

Или в другой же консоли автоматизировать процесс вывода, например, выводить информацию раз в минуту:

watch -n60 killall -SIGUSR1 dd

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

gzip -cd sda1.iso.gz | dd of=/dev/sda1 bs=32768

По умолчанию ibs = obs = bs = 512.


Злобный ламер
2014.05.15 14:38:26
#cid89294

Ответить

Злобный Админ, раз уж у тебя крестики-нолики в качестве капчи (не играл в них лет 10, не удержался), проясни один вопрос. Все мы знаем, как затирать винты нулями при помощи dd. А как затереть винт единицами? Есть ли какой-нибудь файл - источник единиц?

2014.05.15 17:44:10
#cid89297

Ответить

#cid89294, Злобный ламер

Злобный Админ, раз уж у тебя крестики-нолики в качестве капчи (не играл в них лет 10, не удержался), проясни один вопрос. Все мы знаем, как затирать винты нулями при помощи dd. А как затереть винт единицами? Есть ли какой-нибудь файл - источник единиц?

Самописная капча рулит! Полностью решила проблему со спамом.

Генератор единичек или /dev/zero наоборот

2014.05.15 17:52:13
#cid89298

Ответить

Кстати, вариант затирания не всего винта, а только свободного места (затирание удалённых файлов) есть здесь:

http://www.it-simple.ru/?p=4387

Злобный баг.
2015.11.07 16:09:51
#cid91072

Ответить

Баг в капче!

2015.11.08 10:12:57
#cid91073

Ответить

#cid91072, Злобный баг.

Баг в капче!

А-а-а! Баг в комментах!

Не интригуй, сразу говори какой и где.

Артемка
2017.10.30 19:33:31
#cid91933

Ответить

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

2017.10.31 10:16:39
#cid91934

Ответить

#cid91933, Артемка

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

http://www.it-simple.ru/?p=3183

Только не монтировать, а сделать loop и снять тем же dd.