Използване на командата dd

Командата dd (Dataset Definition) е прост, полезен и изненадващо лесен за използване инструмент; С този инструмент можете да направите същото на устройства: дискове и дялове, както при търговски програми като 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,630GB 0:21:30 [1,12MB / s] [

Също така, когато приключи, той ни показва статистика за скоростта на трансфер, общия брой прехвърлени байтове и общото време, необходимо за прехвърляне на всички данни.

(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd от = / dev / mmcblk0p2 10530816 + 0 записани четения <=> 10530816 + 0 записани записа 5391777792 байта (5.4 GB) копирани, 3873,48 s, 1,4 MB / s 5,02 GB 1:04:33 [1,33 MB / s] [<=> 10530816 + 0 записани четения <=> 10530816 + 0 записани записа 5391777792 байта (5.4 GB) копирани, 3873,48, 1,4 s, XNUMX MB / s (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 е дялът за изтриване

Тази операция е много полезна за пълно изтриване на който и да е дял, освен това данните, които ще бъдат изтрити, не могат да бъдат възстановени, следователно това е ниско и много безопасно изтриване, много полезно, например, когато pendrives се заразят с вируси с нашите скъпи прозорци .

Б) На CD / DVD

= Създайте / монтирайте .iso изображение от CD (или DVD)

За да създадете .iso изображение на CD в директорията / 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 Mb файл:

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

= Създайте 2Gb суап файл:

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).


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

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

  1.   сиг84 каза той

    Почти станах диабетик при злоупотреба с командата dd.
    между другото, каква би била разликата с dd_rescue?

    1.    някога каза той

      ddrescue по подразбиране не спира при грешки при четене и се опитва по различни начини да възстанови нечетлива информация.

    2.    Шеко каза той

      хахахха Аз също използвах командата dd много зле, тя е много по-мощна, отколкото си мислех.

  2.   Гниене87 каза той

    Коментирам, че вярвам, че всеки потребител на арка в даден момент е използвал

  3.   Алф каза той

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

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

    1.    Мерлин дебианът каза той

      Ако има някакъв GUI, направен в qt за KDE, който използва тази команда? или трябва да подам оставка.?

      1.    Юли каза той

        Gdiskdump е повече от GUI за тази команда (тя се базира на нея) и въпреки че не знам дали са го направили в qt (мисля, че не), той почти сигурно работи за вас в KDE

    2.    сиг84 каза той

      благодаря за разяснението.
      Използвал съм само dd_rescue за копиране на ISO на USB (най-вече защото в wiki на openSUSE го имаха).
      dd_rescue tu.iso / dev / sdX
      това, което ми харесва е, че показва лента за напредъка:
      http://box.jisko.net/i/110db781.png

  4.   крел каза той

    Алф:
    Наскоро видях същата публикация, публикувана в блога на Hatteras. Вероятно той не приема това зле, но не знам, поне като учтивост би било добре да се позовем на него. Така той печели и в уеб позиционирането.

    Не искам да създавам дилема с това, но на пръв поглед статията изглежда на 95% идентична, с изключение на екранните снимки на терминала, които сте адаптирали. Той дори спомена своите източници.

  5.   Мерлин дебианът каза той

    Интересно признавам, че | pv | не го познаваше.

    Krel Мисля, че източникът е в ubuntu wiki или поздравления за арка.

  6.   Алф каза той

    @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 ако = file.iso на = / media / hard disk ... по погрешка 😛
    някакъв начин за възстановяване на файлове от твърдия диск ???

    1.    елав каза той

      Можете да използвате Testdisk

    2.    Мерлин дебианът каза той

      Приятел ми се е случвал може би с testdisk или със специализиран дистрибутор на живо за спасяване на данни. Препоръката ми да направя резервно копие за следващия път, тъй като използването на тази команда е нещо деликатно в дните ми за новобранец, за да форматирам целия твърд диск, без да искам и сега да се рестартирам добре ... ... Излишно е да казвам, че нито дрънкането не е започнало.

  8.   Раул каза той

    Може ли някой да ми каже каква команда да използвам, за да видя напредъка на копиране с командата dd, имам предвид, че вижда лента за напредък с%, който копира.

    slds

    1.    Юли каза той

      Приятелю! добавяне на командата pv. В същия този пост той го казва почти в началото и обяснява как да го използвате. Прочетете го отново

  9.   Педро каза той

    използвайки тази команда:
    dd ако = / dev / sdc | bzip2> /media/Elements/iso.gz
    Успях да направя iso образ на 16Gb диск и да го запазя на 400Gb диск.
    Но не знам каква би била командата за възстановяване на това изображение на оригиналния 16GB диск или на друг със същия капацитет

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

    въпрос

    използвайте тази команда за
    за n в {1..5}; направете dd, ако = / dev / urandom | pv | dd от = / dev / hda bs = 8b conv = notrunc;
    за 2TB диск
    след това оставам в конзолата нещо подобно
    >
    Трябва ли да изпълня друга команда или колко време може да отнеме процеса?

    благодаря и продължавай

    1.    Джазб каза той

      Има печатна грешка в за ... липсва в края на реда «; готово »остана« за n в {1..5}; направете dd, ако = / dev / urandom | pv | dd от = / dev / hda bs = 8b conv = notrunc; Свършен "

  11.   Хенри Салазар каза той

    много добра статия ... .. Ще я приложа на практика ... поздрави приятелю

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

    Много полезно, много ми помогна, благодаря

  13.   EDFR каза той

    Добър Алф. Благодаря за информацията.

    Въпрос. Има ли начин да копирате само част от изходния диск? Делото е, че ако имам 120Gb диск, в който се използват само 25Gb и искам да направя копие на 40Gb диск, бих се интересувал само от копиране на използваното пространство (25Gb), има ли начин с тази команда ?
    Благодаря предварително.

    1.    Юкитеру каза той

      По-добре би било да използвате rsync, с командата rsync -av / path / to / origin / path / to / destiny вече бихте архивирали всичките си разрешения със съответните им разрешения.

    2.    Юкитеру каза той

      Имах предвид: „всички ваши файлове със съответните им разрешения“

  14.   FOXSPY каза той

    Уважаеми, някой знае ли защо, когато заема командата dd, тя достига само 4.2 GB и показва, че файлът е много голям? Това е изображение на 250GB диск и отива на 1TB външен диск.

    sudo dd if = / dev / sda | pv | dd от = / 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, който вече изтеглих, на USB стик. Не знам дали можете да ми подадете отметка, за да започна с това. Благодаря ти, Педро лобато

  19.   победител каза той

    Защото, когато iso е записан с командата "dd", той работи само за зареждане на някои компютри?
    Опит Имам 2 лаптопа и никой от тях не зарежда iso на която и да е дистрибуция на Linux; но напротив, той се зарежда на стар настолен компютър с неактивен диск

    1.    SEB каза той

      Най-хубавото е да играете на сигурно, използвайки unetbootin, с dd аз също бях оставен с въпроса защо понякога не работи.

      1.    елав каза той

        Не мисля, че зависи от DD, а от ISO. Същото нещо с Unetbootin, той не работи добре с всички дистрибуции.

  20.   победител каза той

    Понякога работи на всички компютри, но трябва да добавите mbr и syslinux към usb към процеса; но това е дълго и досадно.
    Лесната част за unetbooting

    Внимавайте: за мен не е iso или dd, а начинът, по който го записвате.

  21.   Дани каза той

    Имам съмнение дали използвам тази команда:
    sudo dd, ако = / dev / нула = = dev / diskdrive
    Вместо това форматирането на ниско ниво е същото или отнема повече време от това:
    sudo dd, ако = / dev / нула на = / dev / diskdrive bs = 1M ..

  22.   arg0s каза той

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

    например,

    dd ако = / dev / urandom на = / home / myfile delete

  23.   arg0s каза той

    с bs = 1M става по-бързо

  24.   Алекс каза той

    И ако ще направя точно копие от един диск на друг, с всичките му дялове (суап, sda ...) и двата диска еднакви, но единият е на компютъра, а другият на NAS по мрежата? ???
    благодаря

  25.   Херардо каза той

    Коментар, използвам го със status = progress в края и не ми трябва pv, така че debian работи много добре, за да видя напредъка.
    И второто, има ли начин да се получат само данните, а не цялото устройство, тъй като ако това е 2TB диск и използвам само 100 GB, изисквам цялото това пространство. Има ли начин просто да направите резервно копие на тези 100GB? И когато го предам на друг носител, може да е по-малък диск, може би 500?

  26.   Александър каза той

    Помогне !!!
    Изпълнете командата
    dd if = cbpp-9.0-amd64-20170621.iso на = / dev / sdb

    всичко добре ... но сега искам да използвам usb като единица за съхранение и ...

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

    Някой знае ли какво мога да направя.

    PS: коя би била най-добрата програма за възстановяване на информация от дискове и CD DVD-та ...

    1.    анонимен каза той

      трябва да повторите теста за разделяне с fdisk