Команда dd
Стандартный синтаксис команды выглядит следующим образом:
Несложно заметить, что для передачи параметров утилите используется формат записи <имя параметра>=<значение параметра>. Утилита может читать исходные данные из стандартного потока ввода и выводить результирующие данные с помощью стандартного потока вывода в случае отказа от использования параметров if и of, но в подавляющем большинстве случаев данные параметры являются необходимыми для указания имен файлов с соответствующими данными. Утилита читает и записиывает данные блоками, причем размер блока может изменяться с помощью параметра bs (по умолчанию используются блоки размером в 512 Кб). Существуют отдельные параметры для задания размеров читаемых и записываемых блоков, а именно, ibs и obs. Количество читаемых блоков может ограничиваться в помощью параметра count. Для пропуска заданного количества блоков исходного файла может использоваться параметр skip, целевого файла — параметр seek. Для указания флагов чтения и записи через запятую может использоваться параметр iflag. Наиболее часто используемыми флагами являются:
append — активация режима дописывания данных в целевой файл.
direct — режим обработки данных в обход кэша файловых систем (повышает скорость).
dsync — режим записи данных с синхронизацией (повышает надежность).
sync — режим записи данных и метаданных с синхронизацией (повышает надежность).
fullblock — чтение лишь полных блоков.
nonblock — активация режима неблокируемого ввода/вывода (повышает скорость).
noatime — отключение механизма обновления меток времени элементов файловой системы (повышает скорость).
nofollow — отказ от перехода по символьным ссылкам.
Наконец, для указания флагов преобразования через запятую может использоваться параметр conv. Наиболее часто используемыми флагами являются:
lcase — перевод символов строки в кодировке ASCII в нижний регистр.
ucase — перевод символов строки в кодировке ASCII в верхний регистр.
nocreat — вывод сообщения об ошибке в случае отсутствия целевого файла.
excl — вывод сообщения об ошибке в случае существования целевого файла.
notrunc — отказ от урезания целевого файла.
swab — смена мест каждых двух байтов из исходного файла.
noerror — продолжение работы даже в случае возникновения ошибок.
fdatasync — активация режима записи данных в целевой файл перед завершением работы утилиты.
fsync — активация режима записи данных и метаданных в целевой файл перед завершением работы утилиты.
Примеры использования
Создание резервной копии данных дискового накопителя
Предположим, мы используем жесткий диск, представленный файлом устройства /dev/sda, и нам нужно создать посекторную резервную копию всех размещенных на нем данных, сохранив ее в файле в разделе съемного диска с интерфейсом USB, представленном файлом устройства /dev/sdb1 и смонтированным в директорию /mnt/sdb1. Обычно такие файлы резервных копий называются дампами или образами дисков. Наш файл образа диска будет носить имя backup.img. Это команда, с помощью которой его можно создать:
В данной команде с помощью параметра if задается путь к исходному файлу, а с помощью параметра of — к целевому.
Восстановление данных из резервной копии
Для восстановления данных из созданной резервной копии следует загрузить систему с установочного диска дистрибутива и выполнить обратную команду.
Предупреждение: при выполнении данной команды будет перезаписано все содержимое указанного жесткого диска, поэтому стоит относиться к подобным командам с особым вниманием.
Клонирование жесткого диска
Перед клонированием жесткого диска вы должны убедиться в том, что у вас имеется жесткий диск того же объема, что и исходный. Эта же операция может выполняться и в случае флеш-накопителей с интерфейсом USB аналогичных объемов. Предположим, что исходный флеш-накопитель представлен файлом устройства /dev/sdb, а целевой — файлом устройства /dev/sdc. В этом случае вы можете клонировать исходный накопитель с помощью следующей команды:
Даже в том случае, если целевой накопитель имеет больший объем, вам будет доступен лишь объем исходного флеш-накопителя, сохраненный на уровне файловой системы.
Передача файла образа диска на другой компьютер
Для передачи файла образа диска по сети на другой компьютер с именем target может использоваться следующая команда:
Сжатие файла образа диска
Для того, чтобы резервная копия раздела диска занимала меньше места, вы можете сжать ее с помощью компрессора, такого, как bzip2:
С помощью gzip
С помощью xz
Развертывание из сжатого образа
Создание образа оптического диска формата ISO
Для создания образа оптического диска CD, DVD или BD достаточно поблочно прочитать его содержимое и сохранить это содержимое в файле:
Сохранение файла с поврежденного носителя или создание образа такого носителя
Если ваш любимый фильм или музыкальный трек больше не читается из-за повреждения носителя, вы можете попробовать скопировать его с помощью утилиты dd, игнорируя поврежденные блоки:
Вы также можете создать файл образа поврежденного носителя и попытаться извлечь файлы из него:
Запись образа установочного диска на флеш-накопитель с интерфейсом USB
Для установки дистрибутива Linux с флеш-накопителя с интерфейсом USB необходимо записать на этот флеш-накопитель образ установочного диска формата ISO. Для этой цели может использоваться аналогичная команда:
Важно помнить, что даже в случае наличия на флеш-накопителе разделов следует указывать не путь к файлу устройства одного из разделов, а путь к файлу устройства самого накопителя, в нашем случае это /dev/sdc.
Анализ содержимого жесткого диска
Утилита dd является отличным инструментом для исследования файловых систем. Для анализа содержимого жесткого диска с выводом данных из отдельных блоков, в нашем случае, блока 1001 на разделе, представленном файлом устройства /dev/sdc1, достаточно использовать следующую команду:
Для того, чтобы увидеть первые 40 байт вашего жесткого диска в шестнадцатеричном представлении следует использовать команду:
В данном случае с помощью параметра bs задается размер блока диска.
Last updated