Korzystanie z polecenia dd

Polecenie dd (Definicja zbioru danych) jest prostym, użytecznym i zaskakująco łatwym w użyciu narzędziem; Za pomocą tego narzędzia możesz zrobić to samo na urządzeniach: dyskach i partycjach, jak w przypadku programów komercyjnych, takich jak Norton Ghost, w systemie Windows lub bezpłatnych programów, takich jak CloneZilla, w systemie Linux, za pomocą krótkiego wiersza poleceń.

Podstawowa składnia:

Najbardziej podstawowa składnia użycia polecenia dd byłaby następująca:

sudo dd if=origen of=destino

gdzie jeśli oznacza "plik wejściowy = plik wejściowy„To znaczy, co chcesz skopiować i środków "plik wyjściowy = plik wyjściowy„To znaczy plik docelowy (do którego zostaną skopiowane dane);pochodzenie i Miejscem docelowym mogą być urządzenia (czytnik CD lub DVD, dysk twardy, dyskietka, pendrive, partycja itp.), Plik kopii zapasowej lub obraz dysku itp., Ale nie foldery lub podfoldery.

Aby zapewnić płynne użycie tego polecenia, pierwszą rzeczą jest zawsze jasne, jakie partycje / dyski twarde są wywoływane w systemie Linux (na przykład / dev / sda1; / dev pochodzi od device = device w języku angielskim). znać źródłowy i docelowy dysk / partycję, coś, czego możemy łatwo dowiedzieć się za pomocą polecenia sudo fdisk -lo z jakimś graficznym programem do partycjonowania, takim jak gparted. Wszystkie informacje o poleceniu dd można sprawdzić za pomocą poleceń man dd i info dd,

Polecenia tego należy używać ostrożnie i zawsze sprawdzać kolejność i nazwę dysków / partycji, ponieważ tak jak dysk jest klonowany, usuwa go w mgnieniu oka.

Składnia z poleceniem pv: Użycie polecenia dd z poprzednią składnią ma małą wadę, ponieważ jest to polecenie bardzo zastrzeżone - nie podaje informacji - ponieważ po jego wykonaniu znak zachęty terminala pozostaje nieruchomy, więc nie wiemy co się dzieje i ile czasu pozostało na zakończenie wykonywania. Tę małą niedogodność można rozwiązać, dodając do składni polecenia dd polecenie pv, (*) - działające jako potok terminala mierzący dane, które przez niego przechodzą, tak aby składnia wyglądała teraz następująco:

dd if=origen |pv|dd of=destino

W rezultacie otrzymalibyśmy w terminalu coś w rodzaju paska postępu, informacji o przesłanych bajtach, czasie działania i szybkości transferu, a wszystko to w czasie rzeczywistym.

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

Ponadto po zakończeniu pokazuje nam statystyki szybkości przesyłania, całkowitą liczbę przesłanych bajtów i całkowity czas potrzebny na przesłanie wszystkich danych.

(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 10530816 + 0 zapisów odczytanych <=> 10530816 + 0 zapisów zapisanych 5391777792 bajtów (5.4 GB) skopiowanych, 3873,48 s, 1,4 MB / s 5,02 GB 1:04:33 [1,33 MB / s] [<=> 10530816 + 0 odczytanych rekordów <=> 10530816 + 0 zapisanych rekordów 5391777792 bajtów (5.4 GB) skopiowanych, 3873,48, 1,4 s, XNUMX MB / s (alf) - (~) └──┤

(*) Sprawdź przed wykonaniem jakiejkolwiek linii poleceń z tą drugą składnią, czy mamy zainstalowany pakiet pv w systemie lub zainstaluj go, jeśli go nie mamy: oba z Synaptic.

Zobaczmy kilka praktycznych przykładów i opcji tego polecenia (w jego wersji ze sztuczką wyjaśnioną powyżej poleceniem pv):

A) O dyskach twardych i partycjach:

= Sklonuj dysk twardy:

Dzięki temu sklonowalibyśmy dysk hda w hdb. (Dyski IDE):

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

Dzięki temu sklonowalibyśmy dysk sda w sdb. (Dyski SATA):

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

Z opcją bs = 1M uzyskuje się, że zarówno odczyt, jak i zapis są wykonywane w blokach 1 MB (mniej, byłoby wolniej, ale bezpieczniej, a przy większej ilości ryzykujemy utratę danych po drodze).

Należy pamiętać, że w ten sposób dysk jest zapisywany „tak jak jest”, MBR, tablica partycji, puste miejsce itp., Więc można nagrywać tylko na dysku o tym samym lub większym rozmiarze.

= Zapisz tylko pierwszą partycję (hda1) dysku źródłowego na dysk docelowy (hdb):

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

= Nagraj cały dysk (hda) na pierwszą partycję (hdb1) dysku docelowego:

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

= Utwórz obraz - może być bin lub iso - z dysku twardego (hda), w katalogu / home:

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

= Całkowicie usuń informacje z dysku: w tym celu pięć razy wypełnij dysk losowymi znakami. Na dysku nie będzie śladu informacji:

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

= Wymaż dowolną partycję i cały dysk z dowolnego urządzenia:

sudo dd if=/dev/zero |pv|dd of=/dev/sdx (Kasowanie całego dysku)

sudo dd if=/dev/zero |pv|dd of=/dev/sdxa (Kasowanie partycji dysku)

gdzie: x to dysk do wymazania, a to partycja do wymazania

Ta operacja jest bardzo przydatna do całkowitego wymazania dowolnej partycji, w dodatku danych, które zostaną usunięte, nie można odzyskać, dlatego jest to niskopoziomowe i bardzo bezpieczne usuwanie, bardzo przydatne na przykład, gdy pendrive'y zostaną zainfekowane wirusami z naszymi drogimi oknami .

B) Na płycie CD / DVD

= Utwórz / zamontuj obraz .iso z dysku CD (lub DVD)

Aby utworzyć obraz .iso płyty CD w katalogu / home:

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

Aby zamontować obraz .iso z dysku CD:

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

= Odzyskaj porysowaną płytę DVD (to nie przywraca całej płyty DVD, w tym przypadku tylko czytelnych sektorów). Nadaje się również do wadliwych dysków twardych:

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

Opcja noerror służy do uniknięcia błędów odczytu w każdej sytuacji.

C) O MBR i VBS:

= Kopiuj / przywróć główny rekord rozruchowy (MBR):

Aby skopiować MBR:

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

Aby przywrócić MBR:

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

= Wyczyść nasz MBR i tablicę partycji:

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

= Czyści MBR, ale nie dotyka tablicy partycji (bardzo przydatne do wymazania GRUB-a bez utraty danych na partycjach):

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

= Kopiuj / przywróć sektor rozruchowy woluminu (VBS):

Aby skopiować VBS:

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

Aby przywrócić VBS:

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

D) Inne:

= Wypal obraz dysku w naszym katalogu / home, pomijając błędy dysku (bardzo przydatne w przypadku dysków, które umierają):

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

= Utwórz pusty plik 1 Mb:

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

= Utwórz plik wymiany 2 GB:

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

= Zamień wszystkie litery na wielkie:

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

Użyj polecenia dd z graficznym programem środowiska: Gdiskdump, to środowisko graficzne dla tego polecenia dd, które ułatwia zadanie klonuj partycje lub dyski, szybko i łatwo. Można go pobrać ze strony https://launchpad.net/gdiskdump/ Gdy go otworzymy, z uprawnieniami roota - sudo gdiskdump - widzimy, że program jest bardzo łatwy w użyciu, ponieważ musimy tylko wskazać partycję lub dysk do sklonowania (format wejściowy) i jego miejsce docelowe (format wyjściowy).


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Sieg84 powiedział

    Prawie dostałem cukrzycowego nadużycia polecenia dd.
    tak przy okazji, jaka byłaby różnica z dd_rescue?

    1.    zawsze powiedział

      ddrescue domyślnie nie zatrzymuje się na błędach odczytu i próbuje na różne sposoby odzyskać nieczytelne informacje.

    2.    Szeko powiedział

      hahahha, również bardzo źle użyłem polecenia dd, jest ono znacznie potężniejsze niż myślałem.

  2.   Zgnilizny87 powiedział

    Komentuję, że uważam, że każdy użytkownik arch w pewnym momencie korzystał

  3.   Alf powiedział

    @ sieg84, różnica polega na tym, że dd zostało przerwane jakimś błędem odczytu lub urządzenia, w takim przypadku tak się nie stanie bo uszkodzony blok odczyta go określoną ilość razy i będzie kontynuował następny, daje też taką zaletę Możemy go uruchomić kilka razy na tym samym obrazie i nie rozpocznie się on od zera, ale spróbuje go ukończyć.

    Warto wspomnieć, że dd_rescue nigdy z niego nie korzystałem.

    1.    merlin the debianite powiedział

      Alf czy jest jakiś GUI stworzony w qt dla KDE, który używa tego polecenia? czy muszę zrezygnować.?

      1.    Lipiec powiedział

        Gdiskdump to więcej niż GUI dla tego polecenia (jest na nim oparte) i chociaż nie wiem, czy zrobili to w qt (chyba nie), prawie na pewno działa dla ciebie w KDE

    2.    Sieg84 powiedział

      dzięki za wyjaśnienie.
      Użyłem tylko dd_rescue do skopiowania ISO na USB (głównie dlatego, że na wiki openSUSE go mieli).
      dd_rescue tu.iso / dev / sdX
      podoba mi się to, że pokazuje pasek postępu:
      http://box.jisko.net/i/110db781.png

  4.   krelu powiedział

    Alfa:
    Niedawno widziałem ten sam post na blogu Hatteras. Zapewne nie przyjmuje tego źle, ale nie wiem, przynajmniej z uprzejmości dobrze byłoby się do tego odnieść. Więc on także wygrywa w pozycjonowaniu w sieci.

    Nie chcę stwarzać z tym dylematu, ale na pierwszy rzut oka artykuł wydaje mi się w 95% identyczny z wyjątkiem zrzutów ekranu terminala, które dostosowałeś. Wspomniał nawet o swoich źródłach.

  5.   merlin the debianite powiedział

    Ciekawe przyznaję, że | pv | nie znał go.

    Krel Myślę, że źródło to ubuntu wiki lub arch pozdrowienia.

  6.   Alf powiedział

    @krel, sprawa z linuxem jest taka:

    Podczas mojej podróży po tym świecie czytałem i zbierałem rzeczy, mam zeszyt z ponad 400 postami, które umieściłem w Ubuntu Mexico, która była społecznością, w której najwięcej wniosłem w moich pierwszych dniach, niestety wszystko może się powtórzyć, jeśli przeglądasz dużą ilość postów w sieci, są one prawie w tej samej kolejności, rzecz w tym, że większość jest krótsza.

    Mogę opublikować kolejne 5 postów w ciągu tygodnia i możesz znaleźć inne podobne lub takie same, powód? Ubuntu ma najwięcej forów / blogów w sieci.

    W żadnym wypadku nie sądzę, że będzie dylemat, a jeśli administratorzy rozważą jego usunięcie, to wcale by mnie to nie uraziło ani nie przeszkadzało, przestrzegam zasad i co za tym idzie, wśród moich notatek 8, że ich nie mam w kolejności) Chcę coś dodać, aby uniknąć przypadku.

    pozdrowienia

    1.    krelu powiedział

      Dla nikogo nie jest tajemnicą, że co najwyżej 10% treści generowanych w Internecie jest nowych. Z którym pozostałe 90 treści są powielane, odnawiane lub ratowane, i nie mówię, że jest to mniej ważne, wręcz przeciwnie, jest to forma rozpowszechniania wiedzy.

      Jednak gdzie się zatrzymuję, jest coś innego. Kiedy prowadzisz blog tego typu, masz osobistą motywację, aby pomóc, a być może nawet otrzymać za to uznanie. Jednocześnie jestem pewien, że większość osób piszących treści o Wolnym Oprogramowaniu zgadza się z ideą dzielenia się. Nie zapominajmy jednak, że nawet najszlachetniejsze licencje, takie jak BSD, wymagają uznania.

      Odniesienia są również sposobem, w jaki niektóre wyszukiwarki, takie jak Google, poprawiają pozycjonowanie strony internetowej. Mówię tylko, że ponieważ materiał był używany jako minimum wdzięczności, odniósłbym się do tej pracy.

      Myślę, że to wspaniale, że się nimi dzielisz, ale co tracisz, zamieszczając referencje? Pomyśl tylko, czy z innego bloga o lepszym pozycjonowaniu niż ten zawartość tego zostałaby powielona. desdelinux Bez odniesienia do tego, w końcu pogrzebaliby tego bloga.

      Hatteras opublikował to 10 dni temu i jeśli nie wyjął go z twojego notatnika lub nie jesteś Luisem Puente, nie rozumiem, co mówisz, po prostu prawie wszystko jest tekstowe. Mało prawdopodobne, ale nie niemożliwe.

      Ale nic, żeby takie rzeczy się zdarzały. I nie wiem, ze względu na etykę osobistą i współpracę z innym kolegą odniósłbym się do niego. To zależy od ciebie, nie sądzę, żeby Hatteras źle to odebrał, wręcz przeciwnie.

      1.    msx powiedział
  7.   Ten wcześniej powiedział

    Hmm… przez pomyłkę utworzyłem dd if = file.iso of = / media / hard drive…
    jakikolwiek sposób na odzyskanie plików z dysku twardego ???

    1.    pełen życia powiedział

      Możesz użyć Testdisk

    2.    merlin the debianite powiedział

      Przydarzył mi się przyjaciel, być może z dyskiem testowym lub ze specjalistyczną dystrybucją na żywo, aby uratować dane. Moje zalecenie, aby zrobić kopię zapasową następnym razem, ponieważ użycie tego polecenia jest czymś delikatnym w moich początkach, aby sformatować cały dysk twardy bez chęci i teraz, aby dobrze zrestartować komputer …… Nie trzeba dodawać, że grub nie zaczął.

  8.   Raul powiedział

    Czy ktoś może mi powiedzieć, jakiego polecenia użyć, aby zobaczyć postęp kopiowania za pomocą polecenia dd, chodzi mi o to, aby zobaczyć pasek postępu z%, który został skopiowany.

    slds

    1.    Lipiec powiedział

      Przyjacielu! dodanie polecenia pv. W tym samym poście mówi to prawie na początku i wyjaśnia, jak z niego korzystać. Przeczytaj to ponownie

  9.   pedro powiedział

    używając tego polecenia:
    dd if = / dev / sdc | bzip2> /media/Elements/iso.gz
    Udało mi się zrobić obraz ISO dysku 16 Gb i zapisać go na dysku 400 Gb.
    Ale nie wiem, jakie byłoby polecenie przywrócenia tego obrazu na oryginalny dysk 16 GB lub inny o tej samej pojemności

  10.   Luis Rodriguez powiedział

    pytanie

    użyj tego polecenia, aby
    dla n w {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc;
    dla dysku 2 TB
    potem zostaję przy konsoli coś takiego
    >
    Czy powinienem uruchomić inne polecenie, czy jak długo może to potrwać?

    dzięki i kontynuuj

    1.    Jazz powiedział

      W polu for… brakuje na końcu wiersza «; gotowe »zostało« dla n w {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc; Gotowe "

  11.   Henryk Salazar powiedział

    bardzo dobry artykuł… .. zamierzam wprowadzić go w życie… pozdrawiam kolego

  12.   Marcos_tux powiedział

    Bardzo przydatne, bardzo mi pomogło dzięki

  13.   EDFR powiedział

    Dobry Alf. Dzięki za informację.

    Pytanie. Czy istnieje sposób na skopiowanie tylko części dysku źródłowego? Sprawa jest taka, że ​​jeśli mam dysk 120 Gb, na którym jest używane tylko 25 Gb i chcę zrobić kopię na dysk 40 Gb, byłbym zainteresowany tylko skopiowaniem używanego miejsca (25 Gb), czy jest sposób z tym poleceniem ?
    Z góry dzięki.

    1.    jukiteru powiedział

      Byłoby lepiej, gdybyś użył rsync, za pomocą polecenia rsync -av / path / to / origin / path / to / destiny, w którym już utworzyłbyś kopię zapasową wszystkich swoich uprawnień z odpowiednimi uprawnieniami.

    2.    jukiteru powiedział

      Miałem na myśli: „wszystkie twoje pliki z odpowiednimi uprawnieniami”

  14.   FOXSPY powiedział

    Drogi, czy ktoś wie, dlaczego zajmując polecenie dd, osiąga tylko 4.2 GB i wskazuje, że plik jest bardzo duży? Jest to obraz dysku o pojemności 250 GB i przenoszony na dysk zewnętrzny o pojemności 1 TB.

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

    1.    Porywacz powiedział

      Błąd 4Gb daje ci to, ponieważ próbujesz wykonać kopię zapasową na partycji z fs FAT16

  15.   Berno powiedział

    Jaki dobry blog. Bardzo przydatny wpis. Widziałem już zastosowania tego polecenia gdzie indziej, ale w ogóle niczego nie wyjaśniły. Dziękuję Ci.

  16.   carlos torres powiedział

    witam mam wtryskarkę w której zginął program odkąd wymienili stos bios, nie mamy backupu ale mamy inną taką samą maszynę, ma tylko dyskietkę oraz port szeregowy i równoległy jak mogę zrobić backup tej maszyny aby załadować go w drugim, mam nadzieję, że możesz mi pomóc dzięki

  17.   ernesto powiedział

    Chcę tylko skopiować partycję bez uruchamiania LIVE CD. Na przykład mam dysk z / dev / sda1, / dev / sda5, / dev / sda6 i chcę zrobić kopię na / dev / sda5 z innego dysku / dev / sdb1

    polecenie to dd if = / dev / sdb1 of = / dev / sda5 bs = 1M ????

  18.   Piotr Lobato powiedział

    Witam, jak się masz. Mieszkam też w Guadalajarze.
    Twój artykuł na temat polecenia DD jest bardzo interesujący. Chcę przetestować niektóre dystrybucje Linuksa, szczególnie Archlinux, ale nie mogłem użyć polecenia DD i skopiować pobranego już Archilinux ISO na pamięć USB. Nie wiem, czy możesz przekazać mi kleszcza, aby zacząć od tego. Dziękuję, Pedro Lobato

  19.   zwycięzca powiedział

    Dlaczego skoro iso jest nagrywane za pomocą polecenia „dd”, służy ono tylko do uruchamiania na niektórych komputerach PC?
    Exp. Mam 2 laptopy i żaden z nich nie uruchamia ISO żadnej dystrybucji Linuksa; ale wręcz przeciwnie, uruchamia się na starym komputerze stacjonarnym z bezczynnym dyskiem

    1.    seb powiedział

      Najlepiej jest grać bezpiecznie za pomocą unetbootin, z dd zostałem również z pytaniem, dlaczego czasami nie działa.

      1.    pełen życia powiedział

        Myślę, że nie zależy to od DD, ale od ISO. To samo z Unetbootin, nie działa dobrze ze wszystkimi dystrybucjami.

  20.   zwycięzca powiedział

    Czasami działa na wszystkich komputerach, ale do procesu trzeba dodać MBR i syslinux do USB; ale to jest długie i żmudne.
    Łatwa część dotycząca usuwania rozruchu

    Uważaj: dla mnie to nie jest iso ani dd, to sposób, w jaki to nagrywasz.

  21.   Danny powiedział

    Mam wątpliwości, czy używam tego polecenia:
    sudo dd if = / dev / zero of = / dev / diskdrive
    Zamiast tego formatowanie niskiego poziomu jest takie samo lub trwa dłużej:
    sudo dd if = / dev / zero of = / dev / diskdrive bs = 1M ..

  22.   arg0s powiedział

    Czy można użyć polecenia dd do usunięcia określonego pliku?

    na przykład

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

  23.   arg0s powiedział

    gdy bs = 1M staje się szybsze

  24.   alex powiedział

    A jeśli mam zamiar zrobić dokładną kopię z jednego dysku na drugi, ze wszystkimi jego partycjami (swap, sda ...) i obydwoma dyskami takimi samymi, ale jeden jest na komputerze, a drugi na serwerze NAS przez sieć? ???
    dzięki

  25.   Gerardo powiedział

    Komentarz, używam go ze statusem = postęp na końcu i nie potrzebuję pv, więc debian działa bardzo dobrze dla mnie, aby zobaczyć postęp.
    A po drugie, czy jest sposób, aby uzyskać tylko dane, a nie całą jednostkę, ponieważ jeśli jest to dysk 2 TB i używam tylko 100 GB, potrzebuję całej tej przestrzeni. Czy istnieje sposób na wykonanie kopii zapasowej tych 100 GB? A kiedy przekażę to na inny nośnik, może to być mniejszy dysk, może 500?

  26.   Alejandro powiedział

    Pomoc !!!
    Wykonaj polecenie
    dd if = cbpp-9.0-amd64-20170621.iso of = / dev / sdb

    wszystko dobrze ... ale teraz chcę użyć USB jako jednostki pamięci i ...

    USB nie jest zamontowane, nie pojawia się nawet w GParted.

    Czy ktoś wie, co mogę zrobić.

    PS: który byłby najlepszym programem do odzyskiwania informacji z dysków i płyt CD DVD….

    1.    anonimowy powiedział

      musisz ponownie przetestować partycje za pomocą fdisk