Використання команди dd

Команда dd (Визначення набору даних) - це простий, корисний і напрочуд простий у використанні інструмент; За допомогою цього інструменту ви можете зробити те ж саме на пристроях: дисках і розділах, як у комерційних програмах, таких як Norton Ghost, в Windows або безкоштовних програмах, таких як CloneZilla, в Linux, лише за допомогою короткого командного рядка.

Основний синтаксис:

Найбільш базовим синтаксисом для використання команди dd буде такий:

sudo dd if=origen of=destino

де якщо означає "вхідний файл = вхідний файл“, Тобто те, що ви хочете скопіювати та засобів "вихідний файл = вихідний файл“, Тобто файл призначення (куди будуть скопійовані дані);походження та Призначенням можуть бути пристрої (CD або 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 = = 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 МБ / с (alf) - (~) └──┤

(*) Перед виконанням будь-якого командного рядка з цим другим синтаксисом перевірте, чи встановлений у системі пакет pv, або встановіть його, якщо у нас його немає: обидва з Synaptic.

Давайте подивимось декілька практичних прикладів та варіантів цієї команди (у її версії з трюком, поясненим раніше з командою pv):

А) Про жорсткі диски та розділи:

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

За допомогою цього ми б клонували hda-диск у 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 - розділ для стирання

Ця операція дуже корисна для повного стирання будь-якого розділу, крім того дані, які будуть стерті, не можуть бути відновлені, тому це низькорівневе і дуже безпечне стирання, дуже корисне, наприклад, коли накопичувачі заражаються вірусами з нашим дорогі вікна.

Б) На 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

Г) Інші:

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

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 -, ми бачимо, що програма дуже проста у використанні, оскільки нам залишається лише сказати розділ або диск для клонування (Input Format) та призначення (Output Format).


43 коментарі, залиште свій

Залиште свій коментар

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

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   sieg84 - сказав він

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

    1.    будь-коли - сказав він

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

    2.    Шеко - сказав він

      ха-ха-ха, я також дуже погано використовував команду dd, вона набагато потужніша, ніж я думав.

  2.   Гнилі87 - сказав він

    Я коментую, що я вважаю, що кожен користувач арки в певний момент використовував

  3.   Alf - сказав він

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

    Варто згадати, що dd_rescue я ним ніколи не користувався.

    1.    Мерлін дебіаніт - сказав він

      Якщо в qt для KDE створено графічний інтерфейс, який використовує цю команду? чи я повинен подати у відставку.?

      1.    Липень - сказав він

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

    2.    sieg84 - сказав він

      дякую за роз'яснення.
      Я використовував dd_rescue лише для копіювання ISO на USB (здебільшого тому, що в wiki openSUSE вони це мали).
      dd_rescue tu.iso / dev / sdX
      мені подобається те, що він показує індикатор прогресу:
      http://box.jisko.net/i/110db781.png

  4.   крель - сказав він

    Альф:
    Нещодавно я бачив цю саму публікацію, розміщену в блозі Hatteras. Цілком імовірно, що він сприймає це не погано, але я не знаю, принаймні як ввічливість було б непогано посилатися на це. Так само він виграє у веб-позиціонуванні.

    Я не хочу створювати з цим дилему, але на перший погляд стаття здається ідентичною на 95%, за винятком адаптованих вами скриншотів терміналів. Він навіть згадував свої джерела.

  5.   Мерлін дебіаніт - сказав він

    Цікаво визнаю, що | pv | не знав його.

    Крел, я думаю, що джерело знаходиться у вікі ubuntu або привітанні з арками.

  6.   Alf - сказав він

    @krel, справа в Linux така:

    Протягом своєї подорожі цим світом я читав і збирав речі, у мене є блокнот із понад 400 публікаціями, які я розмістив в Ubuntu Mexico, яка була спільнотою, де я зробив найбільший внесок у свої перші дні, на жаль, речі можна повторити, якщо переглянути велику кількість розміщувати в мережі, вони майже в однаковому порядку, справа в тому, що більшість коротше.

    Я можу опублікувати ще 5 публікацій за тиждень, і ви можете знайти інші подібні чи ті самі, причина? Ubuntu має найбільше форумів / блогів в мережі.

    Я ні в якому разі не думаю, що буде дилема, і, якщо адміністратори розглянуть можливість її видалення, це мене зовсім не образить і не турбує, я дотримуюсь правил і того, що випливає, серед моїх приміток я їх не маю в порядку) Я хочу додати щось щоб уникнути випадковості.

    привіт

    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 = / media / жорсткий диск ... помилково 😛
    будь-яким способом відновити файли з жорсткого диска ???

    1.    елав - сказав він

      Ви можете використовувати Testdisk

    2.    Мерлін дебіаніт - сказав він

      Мой друг трапився зі мною, можливо, за допомогою testdisk або за допомогою спеціалізованого дистрибутива в реальному часі для порятунку даних. Моя рекомендація зробити резервну копію для наступного разу, оскільки використання цієї команди - щось делікатне в мої дні початківців, щоб відформатувати весь жорсткий диск, не бажаючи цього, а тепер добре перезавантажитися ... Що само собою зрозуміло, ні grub не розпочався.

  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 = = dev / hda bs = 8b conv = notrunc;
    для диска на 2 ТБ
    то я залишаюся в консолі щось подібне
    >
    Чи слід запускати іншу команду або скільки часу може тривати процес?

    дякую і продовжуйте

    1.    Язб - сказав він

      У кінці рядка є помилка для…, яка відсутня «; готово »залишилось« на n у {1..5}; do dd if = / dev / urandom | pv | dd = = dev / hda bs = 8b conv = notrunc; готово »

  11.   Генрі Салазар - сказав він

    дуже гарна стаття ... .. Я збираюся застосувати це на практиці ... привітання приятелю

  12.   Marcos_tux - сказав він

    Дуже корисно, це мені дуже допомогло, дякую

  13.   EDFR - сказав він

    Хороший Альф. Дякую за інформацію.

    Питання. Чи є спосіб скопіювати лише частину вихідного диска? Справа в тому, що якщо у мене є 120 Гб диск, на якому використовується лише 25 Гб, і я хочу зробити копію на 40 Гб диск, мені буде цікаво лише скопіювати використаний простір (25 Гб), чи є спосіб із цією командою?
    Заздалегідь спасибі.

    1.    Юкітеру - сказав він

      Для вас було б краще використовувати rsync, за допомогою команди rsync -av / path / to / origin / path / to / destiny ви вже б створили резервну копію всіх своїх дозволів з відповідними дозволами.

    2.    Юкітеру - сказав він

      Я мав на увазі: "усі ваші файли з відповідними дозволами"

  14.   FOXSPY - сказав він

    Шановний, хтось знає, чому, займаючи команду dd, вона сягає лише 4.2 Гб і вказує на те, що файл дуже великий? Це образ диска на 250 Гб і надходить на зовнішній диск розміром 1 Тб.

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

    1.    Викрадач - сказав він

      Помилка 4Gb дає вам це, тому що ви намагаєтесь зробити резервну копію в розділі за допомогою fs FAT16

  15.   Берн - сказав він

    Який хороший блог. Дуже корисний запис. Я вже бачив використання цієї команди в інших місцях, але вони взагалі нічого не пояснювали. Дякую.

  16.   Карлос Торрес - сказав він

    привіт, у мене є машина для ін'єкцій, в якій програму було втрачено, оскільки вони замінили стек bios, у нас немає резервної копії, але у нас є інша та сама машина, вона має лише дискету, послідовний і паралельний порт, як я можу зробити резервну копію цієї машини щоб завантажити його в інший, сподіваюся, ви можете мені допомогти, дякую

  17.   ернвесто - сказав він

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

    команда dd, якщо = / dev / sdb1 = = dev / sda5 bs = 1M ????

  18.   Педро Лобато - сказав він

    Привіт як ти. Я також живу в Гвадалахарі.
    Ваша стаття про команду DD дуже цікава. Я хочу протестувати деякі дистрибутиви Linux, зокрема Archlinux, але я не зміг скористатися командою DD і скопіювати завантажений мною ISO Archilinux на флешку. Я не знаю, чи можете ви передати мені галочку, щоб почати з цього. Дякую, Педро Лобато

  19.   Віктор - сказав він

    Оскільки, коли iso записується за допомогою команди "dd", він служить лише для завантаження на деяких ПК?
    Досвід. У мене є 2 ноутбуки, і жоден з них не завантажує iso будь-якого дистрибутива Linux; але навпаки, він дійсно завантажується на старому настільному ПК з неактивним диском

    1.    SEB - сказав він

      Найкраще грати в безпеці, використовуючи unetbootin, з dd у мене також залишилося питання, чому іноді це не працює.

      1.    елав - сказав він

        Я не думаю, що це залежить від DD, а від ISO. Те саме, що з Unetbootin, він погано працює з усіма дистрибутивами.

  20.   Віктор - сказав він

    Іноді це працює на всіх ПК, але до процесу доводиться додавати mbr та syslinux до usb; але це довго і нудно.
    Проста частина відновлення завантаження

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

  21.   Danny - сказав він

    У мене є сумніви, якщо я використовую цю команду:
    sudo dd, якщо = / dev / нуль = / dev / diskdrive
    Замість цього форматування низького рівня є однаковим або займає більше часу:
    sudo dd, якщо = / dev / нуль = / dev / diskdrive bs = 1M ..

  22.   arg0s - сказав він

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

    наприклад

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

  23.   arg0s - сказав він

    при bs = 1M це стає швидшим

  24.   Alex - сказав він

    І якщо я збираюся зробити точну копію з одного диска на інший з усіма його розділами (своп, sda ...) і обидва диски однакові, але один на ПК, а другий на NAS через мережу ????
    спасибі

  25.   Херардо - сказав він

    Коментар, я використовую його з status = progress в кінці, і мені не потрібен pv, тому debian дуже добре працює для мене, щоб побачити прогрес.
    І друге, чи є спосіб отримати лише дані, а не цілий блок, оскільки якщо це диск на 2 ТБ і я використовую лише 100 Гб, мені потрібен весь цей простір. Чи є спосіб просто створити резервну копію цих 100 Гб? І коли я передаю його на інший носій, це може бути менший диск, може, 500?

  26.   Олександр - сказав він

    Допоможіть !!!
    Виконайте команду
    dd if = cbpp-9.0-amd64-20170621.iso з = / dev / sdb

    все добре ... але зараз я хочу використовувати usb як блок зберігання і ...

    USB не підключений, він навіть не відображається в GParted.

    Хтось знає, що я можу зробити.

    PS: яка була б найкраща програма для відновлення інформації з дисків та CD DVD….

    1.    Анонімний - сказав він

      ви повинні повторно перевірити розділ за допомогою fdisk