Использование команды dd

Команда dd (Dataset Definition) - простой, полезный и удивительно простой в использовании инструмент; С помощью этого инструмента вы можете делать то же самое на устройствах: дисках и разделах, как с коммерческими программами, такими как Norton Ghost, в Windows или бесплатными программами, такими как CloneZilla, в Linux, с помощью только короткой командной строки.

Базовый синтаксис:

Самый простой синтаксис для использования команды dd будет следующим:

sudo dd if=origen of=destino

где если означает "входной файл = входной файл«, То есть то, что вы хотите скопировать и средств "выходной файл = выходной файл«, То есть файл назначения (куда будут копироваться данные);происхождение и Местом назначения могут быть устройства (устройство чтения компакт-дисков или DVD-дисков, жесткий диск, дискета, флешка, раздел и т. Д.), Файл резервной копии или образ диска и т. Д., Но не папки или подпапки.

Для беспрепятственного использования этой команды в первую очередь всегда нужно четко понимать, какие разделы / жесткие диски вызываются в Linux (например, / dev / sda1; / dev происходит от device = device на английском языке). чтобы узнать исходный и целевой диск / раздел, то, что мы можем легко узнать с помощью команды sudo fdisk -lo с какой-нибудь программой графического раздела, например gparted. Всю информацию о команде dd можно получить с помощью команд man dd и info dd,

Эту команду следует использовать с осторожностью и всегда проверять порядок и имя дисков / разделов, потому что как только диск клонируется, он стирает его в мгновение ока.

Синтаксис с командой pv: использование команды dd с предыдущим синтаксисом имеет небольшой недостаток, поскольку это очень зарезервированная команда - она ​​не дает информации - потому что, когда она выполняется, приглашение терминала остается неподвижным, поэтому мы не знаем что происходит и сколько времени осталось до его завершения. Это незначительное неудобство можно решить, добавив команду pv, (*), которая действует как оконечный конвейер, измеряющий данные, проходящие через него, к синтаксису команды dd, так что теперь синтаксис будет следующим:

dd if=origen |pv|dd of=destino

В результате мы получили бы в терминале своего рода индикатор выполнения, информацию о переданных байтах, времени его работы и скорости передачи - все в реальном времени.

(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 1,630 ГБ 0:21:30 [1,12 МБ / с] [

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

(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 10530816 + 0 прочитанных записей <=> 10530816 + 0 записанных записей 5391777792 байта (5.4 ГБ) скопировано, 3873,48 с, 1,4 МБ / с 5,02 ГБ 1:04:33 [1,33 МБ / с] [<=> 10530816 + 0 записей прочитано <=> 10530816 + 0 записано записано 5391777792 байта (5.4 ГБ) скопировано, 3873,48, 1,4 с, XNUMX МБ / s (alf) - (~) └──┤

(*) Перед выполнением любой командной строки с этим вторым синтаксисом убедитесь, что в системе установлен пакет pv, или установите его, если его у нас нет: и то, и другое с помощью Synaptic.

Давайте посмотрим на некоторые практические примеры и параметры этой команды (в ее версии с трюком, описанным выше с помощью команды pv):

А) О жестких дисках и разделах:

= Клонировать жесткий диск:

Таким образом мы клонируем жесткий диск в hdb. (Диски IDE):

sudo dd if=/dev/hda |pv|dd of=/dev/hdb bs=1M

С этим мы бы клонировали sda-диск в sdb. (Диски SATA):

sudo dd if=/dev/sda |pv|dd of=/dev/sdb bs=1M

С опцией bs = 1M достигается, что и чтение, и запись выполняются блоками по 1 мегабайту (меньше, это будет медленнее, но безопаснее, а при большем количестве данных мы рискуем потерять данные по пути).

Имейте в виду, что таким образом диск записывается «как есть», MBR, таблица разделов, пустое пространство и т. Д., Поэтому вы можете записывать только на диск того же или большего размера.

= Записать только первый раздел (hda1) исходного диска на целевой диск (hdb):

sudo dd if=/dev/hda1 |pv|dd of=/dev/hdb bs=1M

= Записать весь диск (hda) в первый раздел (hdb1) целевого диска:

sudo dd if=/dev/hda |pv|dd of=/dev/hdb1 bs=1M

= Создать образ - может быть bin или iso - с жесткого диска (hda) в каталоге / home:

sudo dd if=/dev/hda |pv|dd of=/home/hda.bin

= Полностью стереть информацию с диска: для этого заполните диск случайными символами пять раз. На диске не останется и следа информации:

for n in {1..5}; do dd if=/dev/urandom |pv|dd of=/dev/hda bs=8b conv=notrunc;

= Стереть любой раздел и весь диск с любого устройства:

sudo dd if=/dev/zero |pv|dd of=/dev/sdx (Полное стирание диска)

sudo dd if=/dev/zero |pv|dd of=/dev/sdxa (Очистка раздела диска)

где: x - диск, который нужно стереть, a - раздел, который нужно стереть

Эта операция очень полезна для полного стирания любого раздела, кроме того, данные, которые будут стерты, не могут быть восстановлены, поэтому это низкоуровневое и очень безопасное стирание, очень полезно, например, когда pendrives заражены вирусами с нашими дорогими окнами .

Б) На CD / DVD

= Создать / смонтировать образ .iso с компакт-диска (или DVD)

Чтобы создать образ .iso компакт-диска в каталоге / home:

sudo dd if=/dev/cdrom |pv|dd of=/home/imagendeCD.iso

Чтобы смонтировать образ .iso с компакт-диска:

sudo mount -o loop imagedeCD.iso /mnt/home

= Восстановить поцарапанный DVD (это не восстанавливает весь DVD, в данном случае только читаемые сектора). Также подходит для неисправных жестких дисков:

sudo dd if=/dev/cdrom |pv|dd of=/home/dvd_recuperado.iso conv=noerror,sync

Параметр noerror используется, чтобы избежать ошибок чтения в любой ситуации.

В) О MBR и VBS:

= Копировать / восстановить основную загрузочную запись (MBR):

Чтобы скопировать MBR:

sudo dd if=/dev/hda |pv|dd of=mbr count=1 bs=512

Чтобы восстановить MBR:

sudo dd if=mbr |pv|dd of=/dev/hda

= Очистите нашу MBR и таблицу разделов:

sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=512 count=1

= Очищает MBR, но не затрагивает таблицу разделов (очень полезно для стирания GRUB без потери данных в разделах):

sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=446 count=1

= Копировать / восстановить загрузочный сектор тома (VBS):

Чтобы скопировать VBS:

sudo dd if=/dev/hda |pv|dd of=/home/sector_arranque_hda count=1 bs=512

Чтобы восстановить VBS:

sudo dd if=/home/sector_arranque_hda |pv|dd of=/dev/hda

D) Другое:

= Записать образ диска в нашу директорию / home, пропуская ошибки диска (очень полезно для умирающих дисков):

sudo dd conv=noerror if=/dev/hda |pv|dd of=~/home/imagen_disco_con_errores.iso

= Создайте пустой файл размером 1 Мб:

sudo dd if=/dev/zero |pv|dd of=archivo_nuevo_vacio bs=1024 count=1024

= Создайте файл подкачки 2 ГБ:

sudo dd if=/dev/zero |pv|dd of=/swapspace bs=4k count=2048M
mkswap /swapspace
swapon /swapspace

= Преобразовать все буквы в верхний регистр:

sudo dd if=miarchivo |pv|dd of=miarchivo conv=ucase

Используйте команду dd с программой графической среды: Gdiskdump - это графическая среда для этой команды dd, которая упрощает задачу клонировать разделы или диски, быстро и легко. Его можно скачать со страницы https://launchpad.net/gdiskdump/ Как только мы откроем ее с правами root - sudo gdiskdump -, мы увидим, что программа очень проста в использовании, поскольку нам нужно только указать ей раздел или диск для клонирования (входной формат) и его место назначения (выходной формат).


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Зиг84 сказал

    Я чуть не получил диабетическое неправильное использование команды dd.
    кстати, а какая разница с dd_rescue?

    1.    Когда-либо сказал

      ddrescue по умолчанию не останавливается на ошибках чтения и пытается различными способами восстановить нечитаемую информацию.

    2.    Sheko сказал

      хахаха, я тоже очень плохо использовал команду dd, она намного мощнее, чем я думал.

  2.   Ротс87 сказал

    Я комментирую, что считаю, что каждый пользователь Arch в какой-то момент использовал

  3.   Alf сказал

    @ sieg84, разница в том, что dd был прерван из-за некоторой ошибки чтения или устройства, в этом случае этого не произойдет, так как поврежденный блок прочитает его определенное количество раз и продолжит работу со следующим, это также дает то преимущество, что Мы можем выполнить его несколько раз на одном и том же изображении, и он не будет начинаться с нуля, а будет пытаться завершить его.

    Стоит упомянуть, что dd_rescue я никогда не использовал.

    1.    Мерлин дебианит сказал

      Есть ли какой-либо графический интерфейс, созданный в qt для KDE, который использует эту команду? или мне в отставку надо.?

      1.    июль сказал

        Gdiskdump - это больше, чем графический интерфейс для этой команды (он основан на нем), и хотя я не знаю, делали ли они это в qt (я думаю, нет), он почти наверняка работает для вас в KDE

    2.    Зиг84 сказал

      Спасибо за разъяснения.
      Я использовал dd_rescue только для копирования ISO на USB (в основном потому, что в вики openSUSE он у них был).
      dd_rescue tu.iso / dev / sdX
      что мне нравится, так это то, что он показывает индикатор выполнения:
      http://box.jisko.net/i/110db781.png

  4.   Крель сказал

    Альф:
    Недавно я видел этот же пост в блоге Hatteras. Вероятно, он не воспринимает это плохо, но я не знаю, по крайней мере, из вежливости было бы хорошо сослаться на это. Так же он побеждает в позиционировании в Интернете.

    Я не хочу создавать здесь дилемму, но на первый взгляд статья кажется на 95% идентичной, за исключением адаптированных вами снимков экрана терминала. Он даже упомянул свои источники.

  5.   Мерлин дебианит сказал

    Интересно допускаю, что | pv | не знал его.

    Krel Я думаю, что источник находится в вики ubuntu или Arch Greetings.

  6.   Alf сказал

    @krel, дело в linux:

    На протяжении своего путешествия по этому миру я читал и собирал вещи, у меня есть блокнот с более чем 400 сообщениями, которые я разместил в Ubuntu Mexico, сообществе, в которое я внес наибольший вклад в первые дни, к сожалению, вещи могут повториться, если вы просматриваете в сети большое количество сообщений, они почти в одинаковом порядке, но большинство из них короче.

    Я могу опубликовать еще 5 сообщений в неделю, и вы можете найти другие похожие или похожие, причина? У ubuntu больше всего форумов / блогов в сети.

    Я ни в коем случае не думаю, что возникнет дилемма, и, если администраторы решат удалить ее, это меня не обидит и не беспокоит, я соблюдаю правила и то, что следует, среди моих заметок 8, что у меня их нет по порядку) Я ищу что-то добавить, чтобы избежать совпадений.

    привет

    1.    Крель сказал

      Ни для кого не секрет, что не более 10% контента, создаваемого в Интернете, является новым. При этом остальные 90 копируют, обновляют или спасают контент, и я не говорю, что это менее важно, напротив, это форма распространения знаний.

      Однако я остановлюсь на другом. Когда у вас есть блог такого типа, у вас есть личная мотивация помочь и, возможно, даже получить за это признание. В то же время я уверен, что большинство тех, кто пишет материалы о свободном ПО, согласны с идеей совместного использования. Однако не будем забывать, что даже самые благородные лицензии, такие как BSD, требуют признания.

      Кроме того, ссылки - это способ, с помощью которого некоторые поисковые системы, такие как Google, улучшают позиционирование веб-сайта. Я просто говорю, поскольку материал был использован как минимум из благодарности, я бы сослался на эту работу.

      Я думаю, это здорово, что вы делитесь, но что вы теряете, делая ссылку? Подумайте только, если бы из другого блога с лучшим позиционированием, чем этот, было бы дублировано содержимое этого. desdelinux Без ссылки на него в конце концов этот блог похоронят.

      Хаттерас опубликовал его 10 дней назад, и если он не вынул его из вашей записной книжки или вы не Луис Пуэнте, я не могу объяснить то, что вы мне говорите, дело в том, что почти все текстовое. Маловероятно, но возможно.

      Но ничего, что такое случается. И я не знаю, из соображений личной этики и сотрудничества с другим коллегой я бы обратился к нему. Это зависит от вас, я не думаю, что Хаттерас ошибается, скорее, наоборот.

      1.    MSX сказал

        Это правда, это точная копия этого поста: http://hatteras.wordpress.com/2013/01/18/algunos-usos-practicos-del-comando-dd/

  7.   Тот, что был раньше сказал

    Хм ... Я сделал dd if = file.iso of = / media / hard drive ... по ошибке 😛
    любой способ восстановить файлы с жесткого диска ???

    1.    Elav сказал

      Вы можете использовать Testdisk

    2.    Мерлин дебианит сказал

      Со мной случился друг, возможно, с testdisk или со специализированным живым дистрибутивом для спасения данных. Моя рекомендация сделать резервную копию в следующий раз, так как использование этой команды - это что-то деликатное в мои дни новичка, чтобы отформатировать весь жесткий диск без желания, а теперь хорошо перезагрузиться… Излишне говорить, что личинка не запустилась.

  8.   Рауль сказал

    Может ли кто-нибудь сказать мне, какую команду использовать, чтобы увидеть прогресс копирования с помощью команды dd, я имею в виду, чтобы увидеть индикатор выполнения с%, которое было скопировано.

    СЛД

    1.    июль сказал

      Друг! добавив команду pv. В этом же посте он говорит об этом почти в начале и объясняет, как его использовать. Прочтите это еще раз

  9.   Педру сказал

    используя эту команду:
    dd if = / dev / sdc | bzip2> /media/Elements/iso.gz
    Мне удалось сделать ISO-образ диска 16 ГБ и сохранить его на диск 400 ГБ.
    Но я не знаю, какой была бы команда для восстановления этого образа на исходный диск 16 ГБ или на другой диск такой же емкости.

  10.   Луис Родригес сказал

    вопрос

    используйте эту команду для
    для n в {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc;
    для диска 2 ТБ
    то я остаюсь в консоли что-то вроде этого
    >
    Следует ли мне запускать другую команду или сколько времени может занять процесс?

    спасибо и продолжай

    1.    Джазб сказал

      Опечатка в формуле for… отсутствует в конце строки «; готово »осталась« на n в {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc; сделанный "

  11.   Генри Салазар сказал

    очень хорошая статья…… я собираюсь применить ее на практике… привет, дружище

  12.   Маркос_тукс сказал

    Очень полезно, мне очень помогло спасибо

  13.   ЭДФР сказал

    Добрый Альф. Спасибо за информацию.

    Вопрос. Есть ли способ скопировать только часть исходного диска? Дело в том, что если у меня есть диск на 120 ГБ, на котором используется только 25 ГБ, и я хочу сделать копию на диск 40 ГБ, мне было бы интересно скопировать только используемое пространство (25 ГБ), есть ли способ с этой командой ?
    Заранее спасибо.

    1.    Юкитеру сказал

      Было бы лучше использовать rsync, с помощью команды rsync -av / path / to / origin / path / to / destiny вы уже выполняете резервное копирование всех своих разрешений с соответствующими разрешениями.

    2.    Юкитеру сказал

      Я имел в виду: "все ваши файлы с соответствующими разрешениями"

  14.   Фоксшпион сказал

    Уважаемый, кто-нибудь знает, почему при занятии командой dd он достигает всего 4.2Гб и указывает на то, что файл очень большой? Это образ диска 250 ГБ, который переходит на внешний диск емкостью 1 ТБ.

    sudo dd if = / dev / sda | pv | dd of = / home / fox / backup.iso

    1.    Похититель сказал

      ошибка 4Gb дает это вам, потому что вы пытаетесь сделать резервную копию в разделе с fs FAT16

  15.   Berna сказал

    Какой хороший блог. Очень полезная запись. Я уже видел использование этой команды в другом месте, но они вообще ничего не объясняли. Спасибо.

  16.   Карлос Торрес сказал

    привет, у меня есть машина для инъекций, на которой программа была потеряна, так как они заменили стек BIOS, у нас нет резервной копии, но у нас есть другая такая же машина, у нее есть только гибкий диск, последовательный и параллельный порт, как я могу сделать резервную копию этой машины чтобы загрузить его в другой, надеюсь, вы мне поможете спасибо

  17.   Эрнесто сказал

    Я просто хочу скопировать раздел, не начиная с LIVE CD. Например, у меня есть диск с / dev / sda1, / dev / sda5, / dev / sda6, и я хочу сделать копию / dev / sda5 с другого диска / dev / sdb1

    команда dd if = / dev / sdb1 of = / dev / sda5 bs = 1M ????

  18.   Педро Лобато сказал

    Привет, как ты. Я тоже живу в Гвадалахаре.
    Ваша статья о команде DD очень интересна. Я хочу попробовать некоторые дистрибутивы Linux, в частности Archlinux, но у меня не было возможности использовать команду DD и скопировать ISO-образ Archilinux, который я уже загрузил, на USB-накопитель. Я не знаю, можете ли вы поставить мне галочку, чтобы начать с этого. Спасибо, Педро лобато

  19.   Виктор сказал

    Почему, когда ISO записывается с помощью команды "dd", он служит для загрузки только на некоторых ПК?
    Exp. У меня есть 2 ноутбука, и ни один из них не загружает iso любого дистрибутива Linux; но, наоборот, он загружается на старом настольном ПК с неработающим диском

    1.    СЕБ сказал

      Лучше всего перестраховаться с помощью unetbootin, с dd у меня также остался вопрос, почему иногда он не работает.

      1.    Elav сказал

        Не думаю, что это зависит от DD, а от ISO. То же самое и с Unetbootin, он работает не со всеми дистрибутивами.

  20.   Виктор сказал

    Иногда это работает на всех ПК, но вам нужно добавить в процесс mbr и syslinux на usb; но это долго и утомительно.
    Легкая часть об отмене загрузки

    Будьте осторожны: для меня это не iso или dd, а то, как вы это записываете.

  21.   Danny сказал

    Я сомневаюсь, что использую эту команду:
    sudo dd if = / dev / zero of = / dev / diskdrive
    Вместо этого форматирование низкого уровня такое же или занимает больше времени:
    sudo dd if = / dev / zero of = / dev / diskdrive bs = 1M ..

  22.   arg0s сказал

    Можете ли вы использовать команду dd для удаления определенного файла?

    например,

    dd if = / dev / urandom of = / home / myfile delete

  23.   arg0s сказал

    с bs = 1M становится быстрее

  24.   Alex сказал

    И если я собираюсь сделать точную копию с одного диска на другой, со всеми его разделами (подкачка, sda ...) и обоими дисками одинаковыми, но один находится на ПК, а другой на NAS по сети? ???
    Gracias

  25.   Херардо сказал

    Комментарий, я использую его со статусом = прогресс в конце, и мне не нужен pv, поэтому debian очень хорошо работает, чтобы я мог видеть прогресс.
    И второе: есть ли способ получить только данные, а не весь блок, поскольку, если это диск емкостью 2 ТБ, а я использую только 100 ГБ, мне потребуется все это пространство. Есть ли способ просто сделать резервную копию этих 100 ГБ? И когда я передаю его на другой носитель, это может быть диск меньшего размера, возможно, один из 500?

  26.   Александр сказал

    Помогите !!!
    Выполните команду
    dd if = cbpp-9.0-amd64-20170621.iso of = / dev / sdb

    все хорошо ... но теперь я хочу использовать usb как накопитель и ...

    USB не примонтирован, он даже не отображается в GParted.

    Кто-нибудь знает, что я могу сделать.

    PS: какая программа была бы лучшей для восстановления информации с дисков и CD DVD….

    1.    анонимный сказал

      вы должны повторно проверить раздел с помощью fdisk