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=12. Создание образа диска или раздела
Создать полный образ диска /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=progress6. Работа с файлами
Скопировать файл 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 /swapfile9. Создание дампа памяти
Сохранить 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 игнорирует ошибки чтения (актуально для повреждённых дисков).
Полезные советы
- Проверка прогресса. В старых версиях
ddстатус можно запросить через сигнал:killall -USR1 dd - Безопасность. Перед использованием
ddубедитесь, что:- правильно указаны
ifиof; - устройство не смонтировано (если копируете диск/раздел);
- есть резервные копии важных данных.
- правильно указаны
- Альтернативы. Для простых задач (копирование файлов, объединение частей) часто удобнее использовать
cp,catилиtar.