dd

dd

dd — утилита Unix‑подобных систем для низкоуровневого копирования и преобразования данных. Она работает с файлами, устройствами и потоками байтов, позволяя копировать данные блоками, пропускать фрагменты, менять порядок байтов и т. д.

Синтаксис:

dd [опции]

Ключевые параметры:

  • if= — входной файл/устройство (input file);
  • of= — выходной файл/устройство (output file);
  • bs= — размер блока для чтения/записи (block size), по умолчанию 512 байт;
  • count= — количество блоков для копирования;
  • skip= — пропустить указанное число блоков во входном файле;
  • seek= — пропустить указанное число блоков в выходном файле перед записью;
  • conv= — преобразования (например, noerror — игнорировать ошибки, sync — дополнять блоки нулями);
  • status=progress — показывать прогресс выполнения (в новых версиях).

Предупреждение. dd может безвозвратно уничтожить данные при неверном указании параметров (например, если перепутать if и of). Перед выполнением команд проверяйте пути и параметры.


Примеры использования

1. Резервное копирование и восстановление MBR (Master Boot Record)

Создать резервную копию MBR диска /dev/sda:

sudo dd if=/dev/sda of=mbr_backup.bin bs=512 count=1 

Копирует первый сектор (512 байт) диска, содержащий загрузчик и таблицу разделов.

Восстановить MBR из резервной копии:

sudo dd if=mbr_backup.bin of=/dev/sda bs=512 count=1

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

Создать полный образ диска /dev/sda:

sudo dd if=/dev/sda of=/path/to/disk_image.img bs=4M status=progress bs=4M 

ускоряет копирование за счёт больших блоков; status=progress показывает прогресс.

Сжать образ на лету с помощью gzip:

sudo dd if=/dev/sda bs=1M | gzip -c > disk_image.gz 

Уменьшает размер выходного файла.

3. Запись образа на устройство

Записать ISO‑образ на USB‑накопитель /dev/sdX:

sudo dd if=linux.iso of=/dev/sdX bs=4M status=progress && sync

гарантирует, что все данные записаны на устройство перед отключением.

4. Клонирование диска

Клонировать /dev/sda на /dev/sdb:

sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress conv=noerror,sync 

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

5. Очистка устройства

Заполнить диск нулями (например, перед продажей):

sudo dd if=/dev/zero of=/dev/sdX bs=1M status=progress

Заполнить диск случайными данными (более безопасно):

sudo dd if=/dev/urandom of=/dev/sdX bs=1M status=progress

6. Работа с файлами

Скопировать файл input.txt в output.txt:

dd if=input.txt of=output.txt

Пропустить первые 10 КБ входного файла:

dd if=input.txt of=output.txt bs=1k skip=10

Разделить файл на части:

Первые 5 МБ:

dd if=large_file of=part1 bs=1M count=5

Следующие 5 МБ (начиная с 5‑го МБ):

dd if=large_file of=part2 bs=1M skip=5 count=5

Объединить файлы:

dd if=part1 of=combined bs=1M seek=0 dd if=part2 of=combined bs=1M seek=5 seek=5 

указывает начать запись с 5‑го МБ выходного файла.

7. Тестирование производительности диска

Измерить скорость чтения с /dev/sda:

sudo dd if=/dev/sda of=/dev/null bs=1M count=1000 status=progress 

Данные читаются с диска и направляются в /dev/null (не сохраняются), что позволяет оценить скорость чтения.

8. Создание swap‑файла

Создать swap‑файл размером 1 ГБ

sudo dd if=/dev/zero of=/swapfile bs=1G count=1 
sudo chmod 600 /swapfile 
sudo mkswap /swapfile 
sudo swapon /swapfile

9. Создание дампа памяти

Сохранить 100 МБ системной памяти в файл:

sudo dd if=/proc/kcore of=/root/memory_dump.bin bs=1M count=100 

Требует прав суперпользователя; может содержать конфиденциальные данные.

10. Работа с CD/DVD

Создать ISO‑образ с CD‑ROM:

dd if=/dev/cdrom of=cd_backup.iso bs=65536 conv=noerror conv=noerror 

игнорирует ошибки чтения (актуально для повреждённых дисков).


Полезные советы

  1. Проверка прогресса. В старых версиях dd статус можно запросить через сигнал:killall -USR1 dd
  2. Безопасность. Перед использованием dd убедитесь, что:
    • правильно указаны if и of;
    • устройство не смонтировано (если копируете диск/раздел);
    • есть резервные копии важных данных.
  3. Альтернативы. Для простых задач (копирование файлов, объединение частей) часто удобнее использовать cp, cat или tar.