Утилита dd в Ubuntu: от параметров до теста диска

Введение

В операционных системах семейства 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_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 МБ с помощью dd

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

Проверка фактического размера сформированного файла sample_10m.img

2. Мониторинг передачи данных в реальном времени: параметр status=progress

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

Переход в рабочее пространство /tmp/dd_demo

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

Создание 100 МБ файла с интерактивным отображением процесса

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

Просмотр свойств созданного 100-мегабайтного образа

3. Трансформация содержимого и безопасная обработка: возможности параметра conv

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

Переход в директорию демонстрационного стенда

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

Запись начальной текстовой строки в файл input.txt

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

Конвертация символов в верхний регистр через conv=ucase

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

Вывод содержимого преобразованного файла output_upper.txt

4. Оценка производительности дисковой подсистемы: обход кэша с oflag=direct

Перейдем в рабочую папку перед замером показателей ввода-вывода: выполняем cd /tmp/dd_demo.

Возврат в каталог стенда перед тестом скорости

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

Тестирование чистой скорости записи на диск в режиме oflag=direct

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

Очистка временных материалов и каталога /tmp/dd_demo

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