Команды Linux · 5 min read · Sep 19, 2025
Команда Linux dd: объяснение для начинающих (8 примеров)

Команда dd — это мощная утилита, используемая для низкоуровневого копирования и преобразования данных в системах Linux. Она расшифровывается как “дубликатор данных” и часто используется для создания точных копий файлов, разделов или целых дисков, что делает её полезной для таких задач, как создание резервных копий, клонирование дисков или запись образов дисков на физические носители. Команда может копировать и преобразовывать данные между файлами или устройствами, с опциями для управления размером блока, пропуска или поиска данных, а также применения фильтров, таких как сжатие или обмен байтами. Из-за своей способности работать на таком фундаментальном уровне, dd необходимо использовать с осторожностью, так как неправильное использование может привести к потере или повреждению данных.
В этом учебном пособии мы обсудим, как работает этот инструмент, используя несколько простых примеров. Но прежде чем мы это сделаем, стоит упомянуть, что все примеры, упомянутые здесь, были протестированы на Ubuntu 24.04.
Команда dd в Linux
Кратко говоря, команда dd позволяет вам копировать и преобразовывать файл. Инструмент предлагает несколько операндов, которые вы можете использовать, чтобы указать, какой формат вы хотите. Вот общая синтаксическая структура команды, как описано в её справочной странице:
dd [OPERAND]...
dd OPTIONСоздание загрузочной USB-флешки из ISO-файла с помощью команды dd
Распространённое использование команды dd в Linux — это создание загрузочной USB-флешки из ISO-файла. Это часто делается при подготовке USB-накопителя для установки операционной системы. Команда будет выглядеть примерно так:
sudo dd if=/path/to/your.iso of=/dev/sdX bs=4M status=progress && syncВ этом примере:
- if=/path/to/your.iso указывает входной файл, который является образом ISO.
- of=/dev/sdX указывает выходной файл, который является USB-накопителем (замените X на соответствующую букву вашего USB-устройства).
- bs=4M устанавливает размер блока на 4 мегабайта, оптимизируя процесс копирования.
- status=progress предоставляет обновления в реальном времени о ходе копирования.
- sync гарантирует, что все данные записаны на USB перед завершением процесса.
Эта команда создаст загрузочную USB-флешку, которую можно использовать для установки операционной системы, содержащейся в ISO-файле.
Часто задаваемые вопросы
Следующие примеры в формате вопросов и ответов должны дать вам хорошее представление о том, как работает команда dd.
Вопрос 1. Как изменить регистр входного текста с помощью команды dd?
Предположим, у вас есть несколько строк текста, написанных в нижнем регистре, и требуется быстро преобразовать их в верхний регистр. Вы можете использовать опцию командной строки conv (с ucase в качестве её значения).
Вот пример:
Вышеуказанный скриншот показывает команду, а также входной текст. Комбинация клавиш Ctrl+d была использована, чтобы сообщить dd, что мы закончили вводить данные, и как только это было сделано, команда выдала следующий вывод:
Таким образом, вы можете видеть, что входной текст был преобразован из нижнего регистра в верхний регистр. Последние три строки — это просто некоторые статистические данные, связанные с операцией.
Примечание: Аналогично, вы можете использовать значение lcase для преобразования текста из верхнего регистра в нижний регистр.
Вопрос 2. Как читать из файлов и записывать в них вместо этого?
Мы ввели текст через stdin (стандартный ввод) в первом примере выше. Однако вы всегда можете использовать входные и выходные файлы. Чтобы указать имена входных и выходных файлов, используйте опции командной строки if и of.
Например, если вы хотите преобразовать регистр текста в file1, а затем записать его в file2, вы можете сделать это следующим образом:
dd if=file1 of=file2 conv=ucaseВопрос 3. Как пропустить текст при чтении ввода?
Если вы хотите, вы можете попросить dd пропустить некоторые начальные байты при чтении входного текста. Это можно сделать с помощью опции skip, которая требует числового значения. Если, скажем, это значение равно ‘N’, то dd пропустит N блоков размером ibs в начале ввода. Это приводит нас к ‘ibs’, ещё одной опции командной строки dd, значение которой указывает количество байт, которые инструмент читает за раз (по умолчанию 512).
Итак, предположим, вы хотите пропустить первые 4 байта входного файла. Вам следует сначала установить it на 4, а затем использовать 1 в качестве значения пропуска. Это обеспечит пропуск 1 блока по 4 байта при чтении входного файла.
Таким образом, вы можете видеть, что текст hey, был пропущен при чтении file1 — поэтому он не появился в file2.
Вопрос 4. Как поменять местами каждую пару входных байтов в выходе?
Вы также можете использовать dd для обмена каждой пары входных байтов, если такая необходимость существует. Это можно сделать, используя swab в качестве значения для опции командной строки conv. Следующий скриншот прояснит ситуацию:
Вопрос 5. Как сделать так, чтобы dd работал только в том случае, если выходной файл ещё не существует?
Если требуется, чтобы команда dd не делала ничего, когда выходной файл уже существует, то значение excl для опции conv может обеспечить это условие.
Следующий скриншот показывает использование этого случая в действии:
Вопрос 6. Как убедиться, что выходной файл обновляется в режиме добавления?
По умолчанию dd просто перезаписывает выходной файл (если он существует). Но если вы хотите, чтобы он добавлял текст вместо этого, используйте значение append для флага oflag и notrunc для опции conv.
Например:
dd if=file1 of=file3 oflag=append conv=notruncВот команда в действии:

Вопрос 7. Как сделать так, чтобы dd не создавал выходной файл?
Если вы хотите, вы также можете заставить команду dd не создавать выходной файл, если файл, указанный в команде, ещё не существует. Это можно сделать, используя значение nocreat для опции командной строки conv.
Например:
Вопрос 8. Как контролировать уровень информации, выводимой на stderr?
Если вы хотите, вы также можете ограничить количество информации, которую команда выводит на stderr. Это можно сделать с помощью опции командной строки status. Например, если вы хотите подавить всё, кроме сообщений об ошибках, вы можете передать значение none этой опции командной строки:
dd if=file1 of=file3 status=noneДругие доступные значения — noxfer и progress. Вот что говорит справочная страница о опции status:
status=LEVEL
Уровень информации, который будет выведен на stderr; 'none' подавляет
всё, кроме сообщений об ошибках, 'noxfer' подавляет окончательную
статистику передачи, 'progress' показывает периодическую статистику передачиЗаключение
Примеры, обсуждаемые в этом учебном пособии, лишь слегка касаются того, что может сделать команда dd. Чтобы дать вам представление, вы можете использовать этот инструмент для создания виртуальных файловых систем и резервных копий жестких дисков или системных разделов. Для получения дополнительной информации о dd, обратитесь к её справочной странице.
Get new posts in your inbox
No spam. Unsubscribe anytime.