Unix-way → Как пользоваться командой DD в Linux

Это мощная низкоуровневая утилита в состоянии сделать много разных вещей, например резервное копирование раздела, клонировать диск или флэшку, читать память.

Страница man, говорит нам:

«DD это приложение, которое может конвертировать и копировать файлы»

GNU DD это часть пакета Fileutils, в отличие от большинства команд в Unix, DD использует формат записи keyword=value.

Основы использования

Утилита DD копирует указанную входную точку в указанную выходную точку с возможным преобразованиями «файла». Можно указать размеры входного и выходного блока в байтах.

Основные опции:

  • if= задает путь входа
  • of= задает путь вывода

Пример 1

# dd if=/dev/sda of=/dev/sdb

Эта команда сделает точную копию жесткого диска /dev/sda на диск /dev/sdb

Пример 2

#dd if=/dev/dvd of=dvd.iso

Эта команда сделает копию DVD в файл dvd.iso

Пример 3

#dd if=/dev/zero of=/dev/sda

Эта команда заполнит раздел диск /dev/sda нулями, уничтожит с него все данные.

Пример 4

# dd if=/dev/hda | gzip > hda.img.gz

Эта команда сделает точную копию /dev/hda через утилиту сжатия GZIP.

Размеры блока и число блоков

С командой DD можно использовать также 2 важных параметра:

  • bs= установить на вход и выход размер блока
  • count= копировать только n входных блоков

Пример 5

# dd if=/dev/zero of=/dev/null bs=1M count=32768
32768+0 records in
32768+0 records out
34359738368 bytes (34 GB) copied, 2.64483 s, 13.0 GB/s

Эта команда показывает пропускную способность процессора/памяти в Гбайт/с

Пример 6

#dd if=/dev/sda of=/home/sam/MBR.image bs=512 count=1

Эта команда создает образ MBR (master boot record) (в том числе и таблицы разделов).

Пример 7

#dd if=/dev/zero bs=1024 count=1000000 of=/home/sam/1Gb.file
#dd if=/home/sam/1Gb.file bs=64k | dd of=/dev/null

Эти команды могут использоваться чтобы сделать тестирование (проанализировать производительность чтения и производительность записи для 1024-байтовых блоков).

Seek и Skip

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

  • skip= пропускает n блоков от начала входного файла, а затем копирует указанное количество блоков.
  • Seek= пропускает в выходном файле n блоков, прежде чем начать туда запись.

Пример 8

#dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8

Эта команда отображения информацию BIOS, читает память от C:0000 до F:FFFF.

Пример 9

#dd bs=1k if=image.nrg of=image.iso skip=300

Эта команда конвертирует образ формата Nero в ISO удаляя 300k ненужных данных из заголовка формата nrg.

Есть отличная подробная статья тут, рекомендую.
  • avatar
  • miha
  • 16725
  • +33
  • 08 июля 2011, 15:53

Комментариум (7)

RSS свернуть / развернуть
+
+7
avatar

terra

  • 08 июля 2011, 16:40

  • Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/m/makenskiy/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Очень мощная низкоуровневая утилита, но и крайне опасная, при невнимательном применении… rus-linux.net/lib.php?name=MyLDP/consol/dd/dd-1.html
+
+4
avatar

Ctrl

  • 08 июля 2011, 17:15

  • Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/m/makenskiy/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
спс… в копилку
+
+2
avatar

miha

  • 11 июля 2011, 14:02

  • Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/m/makenskiy/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Я ссылку на эту статью дал.
+
+3
avatar

Shade

  • 08 июля 2011, 17:34

  • Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/m/makenskiy/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
sudo dd if=/dev/zero of=/dev/null bs=1M count=32768
[sudo] password for amarash:
32768+0 записей считано
32768+0 записей написано
скопировано 34359738368 байт (34 GB), 27,3553 c, 1,3 GB/c :)))
+
+4
avatar

zhenya-nikitin

  • 08 июля 2011, 17:55

  • Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/m/makenskiy/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Познавательно :)
+
+2
avatar

makenskiy

  • 08 июля 2011, 19:28

  • Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/m/makenskiy/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
+
+1
avatar

terra

  • 08 августа 2011, 15:35

  • Warning: Smarty error: unable to read resource: "cmtedit_button.tpl" in /home/m/makenskiy/itbuben.org/public_html/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
Интересно почему у меня команда
dd if=/dev/zero of=/dev/null bs=1M count=32768
в режиме обычного пользователя показывает — 10.1 Гиг/с
а в режиме суперюзверя всего-лишь — 8.3 Гиг/с

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.