Полное и подробное руководство (с примерами) к DD

Я хочу поделиться поистине замечательной статьей, которую нашел в интернете. В ней, на множестве примеров и подробно, объясняется, что такое команда DD и чего с ее помощью можно добиться.

Вот полный перевод статьи :

1. Почему дд?:

В качестве первого участника нашей серии мы выбрали dd, потому что это полезный инструмент с множеством опций, как вы увидите. Это почти делает его одним из швейцарских армейских ножей в мире Linux. Да, этот термин («швейцарский армейский нож») слишком часто используется авторами статей, посвященных Linux, поэтому мы не могли упустить возможность использовать его сами.

2. Общее использование:

Прежде чем начать, мы хотели бы дать вам общее представление о том, как используется команда `dd` . Во-первых, название происходит от «дубликатор данных», но её также в шутку называют «уничтожитель дисков» или «уничтожитель данных», потому что это очень мощный инструмент. Поэтому мы рекомендуем проявлять особую осторожность при использовании `dd`, поскольку минутная неосторожность может стоить вам ценных данных. Общий синтаксис команды `dd` выглядит следующим образом:

# dd if=$input_data of=$output_data [options]

`input_data` и `output_data` могут представлять собой диски, разделы, файлы, устройства — по сути, всё, на что можно записывать или с чего можно читать. Как вы увидите, вы можете использовать `dd` в сетевом контексте, например, для отправки потоков данных по вашей локальной сети. Вы можете использовать только входную часть команды `dd` или только выходную часть, а в некоторых случаях даже опустить обе части. Все эти варианты будут рассмотрены в следующем разделе.

3. Примеры:

dd if=/dev/urandom of=/dev/sda bs=4k -» Заполняет диск случайными данными

dd if=/dev/sda of=/dev/sdb bs=4096 -» Зеркалирование диска на диск

dd if=/dev/zero of=/dev/sda bs=4k -» Очищает жесткий диск (возможно, потребуется повторить)

dd if=inputfile of=/dev/st0 bs=32k conv=sync -» Скопировать файл на ленточное устройство

dd if=/dev/st0 of=outfile bs=32k conv=sync -» Предыдущая, инвертированная

dd if=/dev/sda | hexdump -C | grep [^00] -» Проверяет, действительно ли диск обнулен

dd if=/dev/urandom of=/home/$user/hugefile bs=4096 -» Заполняет раздел (Остерегайтесь системных разделов!)

`dd if=/dev/urandom of=myfile bs=6703104 count=1` -- Шифрует файл (возможно, перед его удалением)

dd if=/dev/sda3 of=/dev/sdb3 bs=4096 conv=notrunc,noerror -» Копирует один раздел в другой раздел

`dd if=/proc/filesystems | hexdump -C | less` -» Отображает доступные файловые системы

`dd if=/proc/partitions | hexdump -C | less -»` Отображает доступные разделы в КБ

`dd if=/dev/sdb2 ibs=4096 | gzip > partition.image.gz conv=noerror` -- Создает gzip-образ второго раздела на втором диске

`dd bs=10240 cbs=80 conv=ascii,unblock if=/dev/st0 of=ascii.out` -- Копирует содержимое ленты в файл, преобразуя из EBCDIC в ASCII.

dd if=/dev/st0 ibs=1024 obs=2048 of=/dev/st1 -» Копирование с блочного устройства размером 1 КБ на блочное устройство размером 2 КБ

dd if = / dev / zero of = / dev / null bs = 100M count = 100
100 + 0 записывается в
100 + 0 записывает
10485760000 байт (10 ГБ) скопировано,

5.62955 с, 1.9 ГБ / с

Скопируйте 10 ГБ нулей в корзину.

dd if = / dev / zero of = / dev / sda bs = 512 count = 2
fdisk -s / dev / sda
dd if = / dev / zero of = / dev / sda seek = (number_of_sectors - 20) bs = 1k

Удалите GPT с диска. Как GPT записывает данные в начало
И в конце диска, после стирания с начала, мы должны найти количество секторов (вторая команда), а затем стереть последние 20 секторов.

dd if=/home/$user/bootimage.img of=/dev/sdc -» Создать загрузочный UDB-диск (здесь показан как /dev/sdc)

`dd if=/dev/sda of=/dev/null bs=1m` — хороший способ поиска поврежденных блоков. Относится к резервному копированию и системам.

dd if=/dev/sda of=/dev/fd0 bs=512 count=1 -» Скопировать MBR на дискету

dd if=/dev/sda1 of=/dev/sdb1 bs=4096 -» Зеркалирование дисков

dd if=/dev/sr0 of=/home/$user/mycdimage.iso\ bs=2048 conv=nosync -» Создать образ CD

mount -o loop /home/$user/mycdimage.iso /mnt/cdimages/ -» Монтирует указанный образ локально

dd if=/dev/sda of=/dev/sdb bs=64k conv=sync -» Полезно при замене диска на другой такого же размера.

dd if = / dev / sda2 of = / home / $ user / hddimage1.img bs = 1M count = 4430
dd if = / dev / sda2 of = / home / $ user / hddimage2.img bs = 1M count = 8860
[...]

Создание образов DVD раздела (полезно для создания резервных копий)

dd if = / $ location / hddimage1.img of = / dev / sda2 bs = 1M
dd if = / $ location / hddimage2.img of = / dev / sda2 seek = 4430 bs = 1M
dd if = / $ location / hddimage3.img of = / dev / sda2 seek = 8860 bs = 1M
[и т.д…]

Восстановить из предыдущей резервной копии

dd if=/dev/zero count=1 bs=1024 seek=1 of=/dev/sda6 -» Уничтожить суперблок

dd if=/dev/zero count=1 bs=4096 seek=0 of=/dev/sda5 -» Другой способ уничтожить суперблок

`dd if=/home/$user/suspicious.doc | clamscan` -» Проверяет файл на вирусы (требуется ClamAV)

`dd if=/home/$user/binary file | hexdump -C | less` -» Просмотр содержимого бинарного файла (требуется hexdump)

dd if = / home / $ user / bigfile of = / dev / null
dd if = / dev / zero of = / home / $ user / bigfile bs = 1024 count = 1000000

Измерьте скорость чтения / записи жесткого диска

dd if=/dev/sda of=/dev/sda -» Дает новую жизнь старым жестким дискам, которые долгое время не использовались (диски должны быть "отмонтированы")

`dd if=/dev/mem | strings | grep 'string_to_search'` -- Просматривает содержимое памяти (в удобочитаемом виде).

dd if=/dev/fd0 of=/home/$user/floppy.image bs=2x80x18b conv=notrunc -» Скопировать дискету

dd if=/proc/kcore | hexdump -C | less -» Отображает виртуальную память

`dd if=/proc/filesystems | hexdump -C | less` -» Отображает доступные файловые системы

`dd if=/proc/kallsyms | hexdump -C | less -»` Отображает загруженные модули

`dd if=/proc/interrupts | hexdump -C | less -»` Отображает таблицу прерываний

dd if=/proc/uptime | hexdump -C | less -» Отображает время работы в секундах

`dd if=/proc/partitions | hexdump -C | less -»` Отображает доступные разделы в КБ

`dd if=/proc/meminfo | hexdump -C | less` — Отображает состояние памяти

dd if=/dev/urandom of=/home/$user/myrandom bs=100 count=1 -» Создать файл размером 1 КБ со случайным набором бессмысленных символов

dd if=/dev/mem of=/home/$user/mem.bin bs=1024 -» Создает образ текущего состояния системной памяти

dd if=/home/$user/myfile -» Вывести файл в стандартный поток вывода

`dd if=/dev/sda2 bs=16065 | hexdump -C | grep 'text_to_search'` Ищет строку по всему разделу; даже если он защищен, можно загрузиться с Live CD.

dd if=/home/$user/file.bin skip=64k bs=1 of=/home/$user/convfile.bin -» Скопировать file.bin в convfile.bin, пропуская первые 64 КБ

dd if=/home/$user/bootimage.img of=/dev/sdc -» Создать загрузочный UDB-диск (здесь показан как /dev/sdc)

dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8 -» Прочитать BIOS.

dd bs = 1k if = imagefile.nrg of = imagefile.iso skip = 300k - » Преобразует образ Nero в стандартный образ ISO.
Это возможно, потому что единственное различие между ними - это заголовок размером 300 КБ, который Nero добавляет к стандартному ISO-образу.

echo -n "hello vertical world" | dd cbs=1 conv=unblock 2> /dev/null -» Попробуйте, это безопасно. 

`dd if=/dev/sda1 | gzip -c | split -b 2000m – \ /mnt/hdc1/backup.img.gz` Создает сжатый образ раздела с помощью gzip-архива.

cat /mnt/hdc1/backup.img.gz.* | gzip -dc | dd of=/dev/sda1 -» Восстанавливает предыдущую резервную копию

dd if=/dev/zero of=myimage bs=1024 count=10240 -» Создает пустой образ диска

dd ibs=10 skip=1 -» Делит первые 10 байт стандартного ввода

dd bs=265b conv=noerror if=/dev/st0 of=/tmp/bad.tape.image -» Создает образ ленты с поврежденными участками

dd if=/dev/sda count=1 | hexdump -C -» Просмотреть вашу MBR

dd if=/dev/sda | nc -l 10001 nc $system_to_backup_IP 10001 | dd of=sysbackupsda.img -» Быстрое сетевое резервное копирование с помощью netcat

dd if=/dev/zero of=/dev/sdX bs=1024000 count=1 -» Очищает первые 10 МБ раздела

dd if = / dev / zero of = tmpswap bs = 1k
кол = 1000000
chmod 600 tmpswap
tmpswap
своп на tmpswap

Создайте временное пространство обмена

dd if = / dev / sda of = / dev / null bs = 1024k count = 1024
1073741824 байт (1.1 ГБ) скопировано,
24.1684 с, 44.4 МБ / с

Определяет скорость последовательного ввода-вывода вашего диска.

dd if=/dev/random count=1 2>/dev/null | od -t u1 |\ awk '{ print $2}' | head -1 -» Сгенерировать случайное число

dd if=/dev/mem of=myRAM bs=1024 -» Скопировать содержимое оперативной памяти в файл

dd if=/dev/sda bs=512 count=1 | od -xa -» Просмотреть содержимое вашей MBR в шестнадцатеричном и ASCII-формате

`dd if=/my/old/mbr of=/dev/sda bs=446 count=1` -- Восстанавливает MBR без изменения записи в таблице разделов, размер которой составляет от 447 до 511 байт.

`dd if=/dev/sda1 | split -b 700m – sda1-image` -- Создает копию раздела и сохраняет образы, максимальный размер которых составляет 700 МБ.

`ls -l | dd conv=ucase` -» Преобразует вывод команды в верхний регистр

echo "МОЙ ТЕКСТ В ВЕРХНЕМ РЕГИСТРЕ" | dd conv=lcase -» Преобразует любой текст в нижний регистр

`dd if=/etc/passwd cbs=132 conv=ebcdic of=/tmp/passwd.ebcdic` -- Преобразует файл системных паролей в файл формата EBCDIC фиксированной длины

dd if=text.ascii of=text.ebcdic conv=ebcdic -» Преобразовать из ASCII в EBCDIC

`dd if=myfile of=myfile conv=ucase` -» Преобразует файл в верхний регистр (простая замена SED или tr)

4. Вывод:

Это лишь небольшая часть того, что умеет dd, и мы надеемся, что эта статья оснастила их так, чтобы охватить наиболее часто используемые примеры для обычного пользователя. Однако, прежде чем идти дальше, мы рекомендуем вам прочитать документацию к жесткому диску, найти такие вещи, как ограничения LBA, и проявить особую осторожность при использовании dd в корневом терминале. Конечно, у вас уже есть резервные копии, но небольшая дополнительная осторожность сэкономит вам часы ненужной работы.

На этом статья заканчивается.

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

Ничего такого, мало-помалу я буду тестировать команды, хе-хе, если найду что-нибудь интересное, то поделюсь.

привет


Добавить в качестве предпочтительного источника в Google