Команда 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 -, мы увидим, что программа очень проста в использовании, поскольку нам нужно только указать ей раздел или диск для клонирования (входной формат) и его место назначения (выходной формат).
Я чуть не получил диабетическое неправильное использование команды dd.
кстати, а какая разница с dd_rescue?
ddrescue по умолчанию не останавливается на ошибках чтения и пытается различными способами восстановить нечитаемую информацию.
хахаха, я тоже очень плохо использовал команду dd, она намного мощнее, чем я думал.
Я комментирую, что считаю, что каждый пользователь Arch в какой-то момент использовал
@ sieg84, разница в том, что dd был прерван из-за некоторой ошибки чтения или устройства, в этом случае этого не произойдет, так как поврежденный блок прочитает его определенное количество раз и продолжит работу со следующим, это также дает то преимущество, что Мы можем выполнить его несколько раз на одном и том же изображении, и он не будет начинаться с нуля, а будет пытаться завершить его.
Стоит упомянуть, что dd_rescue я никогда не использовал.
Есть ли какой-либо графический интерфейс, созданный в qt для KDE, который использует эту команду? или мне в отставку надо.?
Gdiskdump - это больше, чем графический интерфейс для этой команды (он основан на нем), и хотя я не знаю, делали ли они это в qt (я думаю, нет), он почти наверняка работает для вас в KDE
Спасибо за разъяснения.
Я использовал dd_rescue только для копирования ISO на USB (в основном потому, что в вики openSUSE он у них был).
dd_rescue tu.iso / dev / sdX
что мне нравится, так это то, что он показывает индикатор выполнения:
http://box.jisko.net/i/110db781.png
Альф:
Недавно я видел этот же пост в блоге Hatteras. Вероятно, он не воспринимает это плохо, но я не знаю, по крайней мере, из вежливости было бы хорошо сослаться на это. Так же он побеждает в позиционировании в Интернете.
Я не хочу создавать здесь дилемму, но на первый взгляд статья кажется на 95% идентичной, за исключением адаптированных вами снимков экрана терминала. Он даже упомянул свои источники.
Интересно допускаю, что | pv | не знал его.
Krel Я думаю, что источник находится в вики ubuntu или Arch Greetings.
@krel, дело в linux:
На протяжении своего путешествия по этому миру я читал и собирал вещи, у меня есть блокнот с более чем 400 сообщениями, которые я разместил в Ubuntu Mexico, сообществе, в которое я внес наибольший вклад в первые дни, к сожалению, вещи могут повториться, если вы просматриваете в сети большое количество сообщений, они почти в одинаковом порядке, но большинство из них короче.
Я могу опубликовать еще 5 сообщений в неделю, и вы можете найти другие похожие или похожие, причина? У ubuntu больше всего форумов / блогов в сети.
Я ни в коем случае не думаю, что возникнет дилемма, и, если администраторы решат удалить ее, это меня не обидит и не беспокоит, я соблюдаю правила и то, что следует, среди моих заметок 8, что у меня их нет по порядку) Я ищу что-то добавить, чтобы избежать совпадений.
привет
Ни для кого не секрет, что не более 10% контента, создаваемого в Интернете, является новым. При этом остальные 90 копируют, обновляют или спасают контент, и я не говорю, что это менее важно, напротив, это форма распространения знаний.
Однако я остановлюсь на другом. Когда у вас есть блог такого типа, у вас есть личная мотивация помочь и, возможно, даже получить за это признание. В то же время я уверен, что большинство тех, кто пишет материалы о свободном ПО, согласны с идеей совместного использования. Однако не будем забывать, что даже самые благородные лицензии, такие как BSD, требуют признания.
Кроме того, ссылки - это способ, с помощью которого некоторые поисковые системы, такие как Google, улучшают позиционирование веб-сайта. Я просто говорю, поскольку материал был использован как минимум из благодарности, я бы сослался на эту работу.
Я думаю, это здорово, что вы делитесь, но что вы теряете, делая ссылку? Подумайте только, если бы из другого блога с лучшим позиционированием, чем этот, было бы дублировано содержимое этого. desdelinux Без ссылки на него в конце концов этот блог похоронят.
Хаттерас опубликовал его 10 дней назад, и если он не вынул его из вашей записной книжки или вы не Луис Пуэнте, я не могу объяснить то, что вы мне говорите, дело в том, что почти все текстовое. Маловероятно, но возможно.
Но ничего, что такое случается. И я не знаю, из соображений личной этики и сотрудничества с другим коллегой я бы обратился к нему. Это зависит от вас, я не думаю, что Хаттерас ошибается, скорее, наоборот.
Это правда, это точная копия этого поста: http://hatteras.wordpress.com/2013/01/18/algunos-usos-practicos-del-comando-dd/
Хм ... Я сделал dd if = file.iso of = / media / hard drive ... по ошибке 😛
любой способ восстановить файлы с жесткого диска ???
Вы можете использовать Testdisk
Со мной случился друг, возможно, с testdisk или со специализированным живым дистрибутивом для спасения данных. Моя рекомендация сделать резервную копию в следующий раз, так как использование этой команды - это что-то деликатное в мои дни новичка, чтобы отформатировать весь жесткий диск без желания, а теперь хорошо перезагрузиться… Излишне говорить, что личинка не запустилась.
Может ли кто-нибудь сказать мне, какую команду использовать, чтобы увидеть прогресс копирования с помощью команды dd, я имею в виду, чтобы увидеть индикатор выполнения с%, которое было скопировано.
СЛД
Друг! добавив команду pv. В этом же посте он говорит об этом почти в начале и объясняет, как его использовать. Прочтите это еще раз
используя эту команду:
dd if = / dev / sdc | bzip2> /media/Elements/iso.gz
Мне удалось сделать ISO-образ диска 16 ГБ и сохранить его на диск 400 ГБ.
Но я не знаю, какой была бы команда для восстановления этого образа на исходный диск 16 ГБ или на другой диск такой же емкости.
вопрос
используйте эту команду для
для n в {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc;
для диска 2 ТБ
то я остаюсь в консоли что-то вроде этого
>
Следует ли мне запускать другую команду или сколько времени может занять процесс?
спасибо и продолжай
Опечатка в формуле for… отсутствует в конце строки «; готово »осталась« на n в {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc; сделанный "
очень хорошая статья…… я собираюсь применить ее на практике… привет, дружище
Очень полезно, мне очень помогло спасибо
Добрый Альф. Спасибо за информацию.
Вопрос. Есть ли способ скопировать только часть исходного диска? Дело в том, что если у меня есть диск на 120 ГБ, на котором используется только 25 ГБ, и я хочу сделать копию на диск 40 ГБ, мне было бы интересно скопировать только используемое пространство (25 ГБ), есть ли способ с этой командой ?
Заранее спасибо.
Было бы лучше использовать rsync, с помощью команды rsync -av / path / to / origin / path / to / destiny вы уже выполняете резервное копирование всех своих разрешений с соответствующими разрешениями.
Я имел в виду: "все ваши файлы с соответствующими разрешениями"
Уважаемый, кто-нибудь знает, почему при занятии командой dd он достигает всего 4.2Гб и указывает на то, что файл очень большой? Это образ диска 250 ГБ, который переходит на внешний диск емкостью 1 ТБ.
sudo dd if = / dev / sda | pv | dd of = / home / fox / backup.iso
ошибка 4Gb дает это вам, потому что вы пытаетесь сделать резервную копию в разделе с fs FAT16
Какой хороший блог. Очень полезная запись. Я уже видел использование этой команды в другом месте, но они вообще ничего не объясняли. Спасибо.
привет, у меня есть машина для инъекций, на которой программа была потеряна, так как они заменили стек BIOS, у нас нет резервной копии, но у нас есть другая такая же машина, у нее есть только гибкий диск, последовательный и параллельный порт, как я могу сделать резервную копию этой машины чтобы загрузить его в другой, надеюсь, вы мне поможете спасибо
Я просто хочу скопировать раздел, не начиная с LIVE CD. Например, у меня есть диск с / dev / sda1, / dev / sda5, / dev / sda6, и я хочу сделать копию / dev / sda5 с другого диска / dev / sdb1
команда dd if = / dev / sdb1 of = / dev / sda5 bs = 1M ????
Привет, как ты. Я тоже живу в Гвадалахаре.
Ваша статья о команде DD очень интересна. Я хочу попробовать некоторые дистрибутивы Linux, в частности Archlinux, но у меня не было возможности использовать команду DD и скопировать ISO-образ Archilinux, который я уже загрузил, на USB-накопитель. Я не знаю, можете ли вы поставить мне галочку, чтобы начать с этого. Спасибо, Педро лобато
Почему, когда ISO записывается с помощью команды "dd", он служит для загрузки только на некоторых ПК?
Exp. У меня есть 2 ноутбука, и ни один из них не загружает iso любого дистрибутива Linux; но, наоборот, он загружается на старом настольном ПК с неработающим диском
Лучше всего перестраховаться с помощью unetbootin, с dd у меня также остался вопрос, почему иногда он не работает.
Не думаю, что это зависит от DD, а от ISO. То же самое и с Unetbootin, он работает не со всеми дистрибутивами.
Иногда это работает на всех ПК, но вам нужно добавить в процесс mbr и syslinux на usb; но это долго и утомительно.
Легкая часть об отмене загрузки
Будьте осторожны: для меня это не iso или dd, а то, как вы это записываете.
Я сомневаюсь, что использую эту команду:
sudo dd if = / dev / zero of = / dev / diskdrive
Вместо этого форматирование низкого уровня такое же или занимает больше времени:
sudo dd if = / dev / zero of = / dev / diskdrive bs = 1M ..
Можете ли вы использовать команду dd для удаления определенного файла?
например,
dd if = / dev / urandom of = / home / myfile delete
с bs = 1M становится быстрее
И если я собираюсь сделать точную копию с одного диска на другой, со всеми его разделами (подкачка, sda ...) и обоими дисками одинаковыми, но один находится на ПК, а другой на NAS по сети? ???
Gracias
Комментарий, я использую его со статусом = прогресс в конце, и мне не нужен pv, поэтому debian очень хорошо работает, чтобы я мог видеть прогресс.
И второе: есть ли способ получить только данные, а не весь блок, поскольку, если это диск емкостью 2 ТБ, а я использую только 100 ГБ, мне потребуется все это пространство. Есть ли способ просто сделать резервную копию этих 100 ГБ? И когда я передаю его на другой носитель, это может быть диск меньшего размера, возможно, один из 500?
Помогите !!!
Выполните команду
dd if = cbpp-9.0-amd64-20170621.iso of = / dev / sdb
все хорошо ... но теперь я хочу использовать usb как накопитель и ...
USB не примонтирован, он даже не отображается в GParted.
Кто-нибудь знает, что я могу сделать.
PS: какая программа была бы лучшей для восстановления информации с дисков и CD DVD….
вы должны повторно проверить раздел с помощью fdisk