Утилита dd: копирование с комфортом

Для того, чтобы скопировать файл, мы чаще всего используем команду cp, несправедливо забывая о таком «старожиле» в *nix системах как утилита dd (dataset definition). Ее основное преимущество заключается в том, что она позволяет копировать данные побайтово. Кажется, все очень просто. Однако на самом деле, с помощью команды dd можно сделать столько всего, что примитивным этот инструмент точно не назовешь. В статье рассмотрим часто используемые примеры этой команды.

Синтаксис

# dd if=источник копирования of=файл назначения параметры

Вводим команду

# dd if=/dev/urandom of=/dev/null bs=100M count=5

Получаем отчет об операции

dd: warning: partial read (33554431 bytes); suggest iflag=fullblock
0+5 records 
0+5 records out
167772155 bytes (168 MB) copied, 17.117 s, 9.8 MB/s

Параметры, указанные в команде

if – источник копирования;

of – файл назначения, куда копируем;

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

count – число, которое указывает на то, какое количество площадок мы хотим скопировать за один сеанс.

В результате у нас в null устройство скопируется 500 мегабайт информации.

Как источник копирования, так и файл назначения могут быть и обычными файлами, и устройствами.

Примеры

Создание образа диска 

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

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

Манипуляции с жестким диском 

Копируем жесткий диск побайтово с размером буфера 4 Кб

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

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

# dd if=/dev/sda1 of=/dev/sdb2 bs=4096 conv=noerror,sync

Все свободное место на диске заполняем нулями

# dd if=/dev/zero of=zerofill

Удалить содержимое жесткого диска, предварительно заполнив его нулями, можно командой

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

Смотрим статус выполнения операции

# killall –USR1 dd

Или

# dd if=image.iso of=/dev/sdb status=progress

Резервное копирование MBR

Главная загрузочная запись (master boot record) занимает первых 512 байт жесткого диска. Включает в себя таблицу разделов, загрузчик и небольшой фрагмент исполняемого кода. Чтобы создать резервную копию MBR, пишем

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

В качестве вывода получаем подтверждение о том, что у нас скопировалось 512 байт со скоростью 627 кБ/с.

1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000816343 s, 627 kB/s

Восстанавливаем данные с помощью команды

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

Учимся выполнять различные трюки с файлами при помощи целого набора команд, включая утилиту dd, на нашем авторском курсе «Администрирование Linux. Базовый уровень». Присоединяйтесь!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *