Введение
В операционных системах семейства Linux утилита dd остается незаменимым инструментом системного администратора для побитового клонирования накопителей, создания резервных копий и формирования тестовых файлов заданного объема. В этой статье мы подробно разберем ключевые аргументы команды (bs, count, status=progress, conv, oflag) на наглядных практических сценариях в терминале Ubuntu.
1. Базовые принципы dd: настройка потоков (if, of) и управление блоками (bs, count)
Чтобы исключить риск случайного повреждения рабочих данных, подготовку тестовой среды начнем с выделения изолированного каталога во временной файловой системе: выполняем команду mkdir -p /tmp/dd_demo && cd /tmp/dd_demo.

Функциональное назначение dd заключается в низкоуровневой поблочной обработке и перезаписи данных между файлами или физическими блочными устройствами.
В качестве первого примера сгенерируем фиктивный образ sample_10m.img объемом ровно 10 МБ: для этого считываем нулевые байты из псевдоустройства /dev/zero, задав размер порции в 1 МБ и ограничив цикл десятью итерациями.
⚙️ [Ключевые параметры]
if=FILE : определяет источник входного потока (файл или системное устройство).of=FILE : указывает целевой объект для сохранения результирующего потока.bs=BYTES : фиксирует объем данных, считываемый и записываемый за один рабочий такт.count=N : задает суммарное число обрабатываемых входных блоков.status=LEVEL : регулирует детализацию сервисных сообщений и отображение динамики передачи данных (например, progress).conv=CONVS : включает правила посимвольного преобразования информации или флаги принудительного сброса буферов (например, sync, fdatasync).

Убедимся, что полученный файл строго соответствует заявленным габаритам в 10 МБ, запросив его атрибуты командой ls -lh sample_10m.img.

2. Мониторинг передачи данных в реальном времени: параметр status=progress
Возвращаемся в нашу рабочую директорию для следующего эксперимента с помощью команды cd /tmp/dd_demo.

По умолчанию утилита выполняет операции молчаливо, что крайне неудобно при обработке объемных массивов данных или снятии образов целых дисков. Добавив параметр status=progress, мы получаем наглядный вывод текущей скорости и объема перенесенных байтов прямо во время создания тестового файла sample_100m.img на 100 МБ.
Постоянное обновление счетчиков на экране избавляет от неопределенности и позволяет оперативно оценить время завершения тяжелой дисковой операции.

Свериться с фактическими метаданными созданного объекта sample_100m.img и подтвердить его корректную запись можно через ls -lh sample_100m.img.

3. Трансформация содержимого и безопасная обработка: возможности параметра conv
Для выполнения тестов по модификации потока данных повторно перейдем в рабочую папку: cd /tmp/dd_demo.

Сформируем исходный текстовый документ input.txt, содержащий тестовую фразу в нижнем регистре, запустив команду echo 'hello linux ubuntu dd command tutorial' > input.txt.

Воспользовавшись опцией conv=ucase, перенаправим поток из исходного файла в целевой output_upper.txt с автоматическим переводом латинских букв в верхний регистр.
Параллельно укажем модификатор status=none, который подавляет стандартную сводную статистику, оставляя терминал чистым.

Проконтролируем результат трансформации и корректность нового файла командой cat output_upper.txt.

4. Оценка производительности дисковой подсистемы: обход кэша с oflag=direct
Перейдем в рабочую папку перед замером показателей ввода-вывода: выполняем cd /tmp/dd_demo.

При стандартной записи ядро Linux активно кэширует операции в оперативной памяти, искажая реальные показатели скорости накопителя. Указание модификатора oflag=direct заставляет утилиту обращаться напрямую к физическому устройству в обход Page Cache при сохранении блока объемом 50 МБ.
В связке с status=progress этот подход позволяет получить объективные данные о «чистой» линейной пропускной способности подсистемы хранения на запись.

Завершив практические испытания, полностью удалим временные файлы и экспериментальную директорию командой rm -rf /tmp/dd_demo.

Мы рассмотрели фундаментальные приемы работы с утилитой dd в Ubuntu — от контроля размеров блоков и конвертации данных до базового тестирования производительности оборудования.
Учитывая разрушительную силу утилиты при неверном указании целевого пути (of), всегда перепроверяйте аргументы перед нажатием Enter, чтобы работа с блочными устройствами оставалась безопасной и эффективной.