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).
Prawie dostałem cukrzycowego nadużycia polecenia dd.
tak przy okazji, jaka byłaby różnica z dd_rescue?
ddrescue domyślnie nie zatrzymuje się na błędach odczytu i próbuje na różne sposoby odzyskać nieczytelne informacje.
hahahha, również bardzo źle użyłem polecenia dd, jest ono znacznie potężniejsze niż myślałem.
Komentuję, że uważam, że każdy użytkownik arch w pewnym momencie korzystał
@ 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.
Alf czy jest jakiś GUI stworzony w qt dla KDE, który używa tego polecenia? czy muszę zrezygnować.?
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
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
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.
Ciekawe przyznaję, że | pv | nie znał go.
Krel Myślę, że źródło to ubuntu wiki lub arch pozdrowienia.
@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
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.
To prawda, jest to prawdziwa kopia tego postu: http://hatteras.wordpress.com/2013/01/18/algunos-usos-practicos-del-comando-dd/
Hmm… przez pomyłkę utworzyłem dd if = file.iso of = / media / hard drive…
jakikolwiek sposób na odzyskanie plików z dysku twardego ???
Możesz użyć Testdisk
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ął.
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
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
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
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
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 "
bardzo dobry artykuł… .. zamierzam wprowadzić go w życie… pozdrawiam kolego
Bardzo przydatne, bardzo mi pomogło dzięki
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.
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.
Miałem na myśli: „wszystkie twoje pliki z odpowiednimi uprawnieniami”
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
Błąd 4Gb daje ci to, ponieważ próbujesz wykonać kopię zapasową na partycji z fs FAT16
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.
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
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 ????
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
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
Najlepiej jest grać bezpiecznie za pomocą unetbootin, z dd zostałem również z pytaniem, dlaczego czasami nie działa.
Myślę, że nie zależy to od DD, ale od ISO. To samo z Unetbootin, nie działa dobrze ze wszystkimi dystrybucjami.
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.
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 ..
Czy można użyć polecenia dd do usunięcia określonego pliku?
na przykład
dd if = / dev / urandom of = / home / myfile delete
gdy bs = 1M staje się szybsze
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
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?
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….
musisz ponownie przetestować partycje za pomocą fdisk