La comanda dd (Dataset Definition), és una eina senzilla, útil, i sorprenentment fàcil d'utilitzar; amb aquesta eina es pot fer el mateix, sobre dispositius: discs i particions, que amb programes comercials com Norton Ghost, en Windows o lliures com Clonezilla, en Linux, amb només una petita línia d'ordres.
Sintaxi Bàsica:
La sintaxi mes bàsica per a l'ús de la comanda dd, seria aquesta:
sudo dd if=origen of=destino
on if significa "input file = arxiu d'entrada", És a dir, el que es vol copiar i of significa "output file = arxiu de sortida", És a dir, l'arxiu destí (on es van a copiar les dades);origen i destinació poden ser dispositius (lectora de CD o DVD, disc dur, diskettera, pendrive, partició, etc.), arxiu de còpia de seguretat o imatge de disc, etc, però no carpetes o subcarpetes.
Per a l'ús sense problemes d'aquesta comanda, el primer sempre és tenir clar com es diuen les particions / discos durs en Linux (/ dev / sda1 per exemple; / dev deriva device = dispositiu, en anglès). per saber el disc / partició d'origen i el de destinació, cosa que vam esbrinar fàcilment amb la comanda sudo fdisk -el amb algun programa gràfic de particions com gparted. Tota la informació sobre la comanda dd, es pot consultar amb la comanda man dd i info dd,
S'ha d'utilitzar aquesta comanda amb precaució, i comprovant sempre l'ordre i nom dels discos / particions, perquè el mateix que es clona un disc, ho esborra en un vist i no vist.
Sintaxi amb la comanda pv: Utilitza la comanda dd amb la sintaxi anterior té un petit inconvenient, ja que és una ordre molt reservat - no dóna informació -, ja que a l'executar-lo, l'indicador de la terminal queda immòbil, de manera que no sabem que és el que està passant i quant de temps falta perquè acabi de executar-se. Aquest petit inconvenient es pot solucionar afegint la comanda PV, (*) - el qual actua com una canonada de terminal que mesura les dades que passen a través d'ella- a la sintaxi de la comanda dd, de manera que ara la sintaxi seria:
dd if=origen |pv|dd of=destino
Com a resultat obtindríem al terminal una mena de barra de progrés, la informació sobre bytes transferits, el temps que porta executant i la taxa de transferència, tot això en temps real.
(Alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 1,630GB 0:21:30 [1,12MB / s] [
A més a l'acabar ens mostra estadístiques de la taxa de transferència, el total de bytes transferits i el temps total que va trigar a transferir totes les dades.
(Alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 10530816 + 0 registres llegits <=> 10530816 + 0 registres escrits 5391777792 bytes (5.4 GB) copiats, 3873,48 s, 1,4 MB / s 5,02GB 1:04:33 [1,33MB / s] [<=> 10530816 + 0 registres llegits <=> 10530816 + 0 registres escrits 5391777792 bytes (5.4 GB) copiats, 3873,48, 1,4 s, XNUMX MB / s (alf) - (~) └──┤
(*) Comprovar abans d'executar qualsevol línia de comandaments amb aquesta segona sintaxi, que tenim instal·lat al sistema el paquet PV, o instal·lar-lo si no ho tinguéssim: ambdues coses amb Synaptic.
Anem a veure alguns exemples pràctics i opcions d'aquesta comanda (en la seva versió amb el truc explicat anteriorment amb la comanda pv):
A) Sobre discs durs i particions:
= Clonar un disc dur:
Amb això clonaríamos el disc hda a hdb. (Discs IDE):
sudo dd if=/dev/hda |pv|dd of=/dev/hdb bs=1M
Amb això clonaríamos el disc sda a sdb. (Discs SATA):
sudo dd if=/dev/sda |pv|dd of=/dev/sdb bs=1M
Amb l'opció bs = 1 M, s'aconsegueix que tant la lectura com l'escriptura es faci en blocs d'1 megabyte, (almenys, seria més lent però més segur, i amb mes ens arrisquem a perdre dades pel camí).
Cal tenir en compte que d'aquesta manera es grava el disc "tal qual", MBR, taula de particions, espai buit, etc ..., per la qual cosa només podràs gravar en un disc de la mateixa o més gran.
= Gravar només la primera partició (hda1) del disc d'origen en el disc (hdb) de destinació:
sudo dd if=/dev/hda1 |pv|dd of=/dev/hdb bs=1M
= Gravar el disc complet (hda) a la primera partició (hdb1) del disc de destinació:
sudo dd if=/dev/hda |pv|dd of=/dev/hdb1 bs=1M
= Crear una imatge - pot ser bin o iso - del disc dur (hda), al directori / home:
sudo dd if=/dev/hda |pv|dd of=/home/hda.bin
= Elimina totalment la informació d'un disc: per a això, omple el disc amb caràcters aleatoris, cinc vegades. No va a quedar ni rastre d'informació en el disc:
for n in {1..5}; do dd if=/dev/urandom |pv|dd of=/dev/hda bs=8b conv=notrunc;
= Esborrar qualsevol partició i disc complet de qualsevol dispositiu:
sudo dd if=/dev/zero |pv|dd of=/dev/sdx
(Esborrat de disc complet)
sudo dd if=/dev/zero |pv|dd of=/dev/sdxa
(Esborrat de partició de disc)
on: x és el disc a esborrar, a és la partició a esborrar
Aquesta operació és molt útil per esborrar completament qualsevol partició, a més les dades que s'esborraran no es poden recuperar, per tant és un esborrat a baix nivell i molt segur, molt útil per exemple per quan els pendrives se'ns s'infecten de virus amb el nostre volgut windows.
B) Sobre un CD / DVD
= Crear / Muntar una imatge .iso d'un CD (o DVD)
Per crear la imatge .iso d'un CD en el directori / home:
sudo dd if=/dev/cdrom |pv|dd of=/home/imagendeCD.iso
Per muntar la imatge .iso del nou CD:
sudo mount -o loop imagedeCD.iso /mnt/home
= Restauració d'un DVD ratllat (Això no recupera tot el DVD, en aquest cas, només els sectors llegibles). Serveix també per a discos durs defectuosos:
sudo dd if=/dev/cdrom |pv|dd of=/home/dvd_recuperado.iso conv=noerror,sync
L'opció noerror, serveix per obviar els errors de lectura en qualsevol situació.
C) Sobre MBR i VBS:
= Copia / Restaurar el Master Boot Record (MBR):
Per copiar el MBR:
sudo dd if=/dev/hda |pv|dd of=mbr count=1 bs=512
Per restaurar el MBR:
sudo dd if=mbr |pv|dd of=/dev/hda
= Netejar nostre MBR i la taula de particions:
sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=512 count=1
= Neteja el MBR però no toca la taula de particions, (molt útil per esborrar el GRUB sense perdre dades en les particions):
sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=446 count=1
= Copia / Restaurar el Volume Boot Sector (VBS):
Per copiar el VBS:
sudo dd if=/dev/hda |pv|dd of=/home/sector_arranque_hda count=1 bs=512
Per restaurar el VBS:
sudo dd if=/home/sector_arranque_hda |pv|dd of=/dev/hda
D) Altres:
= Gravar una imatge del disc al nostre directori / home saltant-nos els errors del disc (molt útil per a discs que s'estan morint):
sudo dd conv=noerror if=/dev/hda |pv|dd of=~/home/imagen_disco_con_errores.iso
= Crear un arxiu buit d'1 Mb:
sudo dd if=/dev/zero |pv|dd of=archivo_nuevo_vacio bs=1024 count=1024
= Crear un arxiu swap de 2Gb:
sudo dd if=/dev/zero |pv|dd of=/swapspace bs=4k count=2048M
mkswap /swapspace
swapon /swapspace
= Converteix totes les lletres en majúscules:
sudo dd if=miarchivo |pv|dd of=miarchivo conv=ucase
Utilitza la comanda dd amb un programa amb entorn gràfic: Gdiskdump, és un entorn gràfic per aquesta comanda dd que ens facilita la tasca de clonar particions o discos, D'una forma ràpida i senzilla. Es pot descarregar des de la pàgina https://launchpad.net/gdiskdump/ Un cop l'obrim, amb permisos de root - suo gdiskdump -, veiem que el programa és molt fàcil d'usar, ja que només hem de dir-li la partició o disc a clonar (Format d'entrada) i el seu destí (Format de Sortida).
gairebé em faig diabètic amb el mal ús de la comanda dd.
per cert, com seria la diferència amb dd_rescue ¿?
ddrescue per defecte no s'atura en els errors de lectura i intenta per diversos mitjans recuperar la informació il·legible.
hahahha jo també faci servir molt malament la comanda dd, és moltíssim més potent del que jo creia.
Comanto que jo crec que tot usuari de fitxers en algun moment ús
@ Sieg84, la diferència està en que el dd s'interrompia amb algun error de lectura o d'el dispositiu en aquest cas no passés això ja que el bloc danyat el llegirà un nombre determinat de vegades i continués amb el següent, també brinda l'avantatge que podem executar diverses vegades sobre la mateixa imatge i no comencés de zero sinó que tractés de completar la mateixa.
Cal esmentar que dd_rescue mai ho he utilitzat.
Alf existirà alguna GUI feta en qt per a KDE que usi aquesta comanda? o m'he de resignar.?
Gdiskdump és mes que una GUI per aquesta comanda (aquesta basat en el) i encara que no sé si ho van fer en qt (crec que no) gairebé segur et serveix a KDE
gràcies per l'aclariment.
només he utilitzat dd_rescue per copiar ISO als USB (mes que res per que a la wiki d'openSUSE aixi ho tenien).
dd_rescue tu.iso / dev / sdX
el que m'agrada és que mostra una barra de progrés:
http://box.jisko.net/i/110db781.png
Alf:
Fa poc vaig veure publicat aquest mateix post al Bloc de Hatteras. És probable que el no es prengui a malament això però jo que sé, com a mínim per cortesia estaria bé referenciar-lo. Així també el guanya en posicionament web.
No vull generar dilema amb això però a simple vista l'article em sembla un 95% idèntic excepte per les captures de terminal que les has adaptat. Fins i tot el va esmentar les seves fonts.
Interessant admeto que | pv | no el coneixia.
Krel crec que la font està en wiki d'ubuntu o de fitxers salutacions.
@krel, la cosa de linux és la següent:
Al llarg de la meva andanza en aquest món he llegit i recopilat coses, tinc un quadern amb més de 400 post que vaig posar en ubuntu Mèxic que va ser la comunitat on més contribuiran en els meus inicis, malauradament les coses poden repetir-se, si revises la gran quantitat de post a la xarxa, estan gairebé en el mateix ordre, la cosa és que la majoria són mes curts.
Puc publicar altres 5 post a la setmana i pots trobar altres semblants o iguals, ¿el motiu? Ubuntu té la major quantitat de fòrums / blogs a la xarxa.
De cap manera crec que hi hagi dilema, i, si els administradors consideren el esborrar-ho, per res em ofendria ni molestaria, m'atinc a les normes i al que segueix, entre els meus apunts 8que no els tinc en ordre) estic buscant afegir alguna cosa per evitar la coincidència.
Salutacions
Per a ningú és un misteri que com a molt només el 10% de l'contingut que es genera a la xarxa és nou. Amb la qual cosa l'altre 90 és contingut duplicat, renovat o rescatat, i no dic que això sigui menys important, tot el contrari, és una forma de disseminació de el coneixement.
No obstant això on jo m'aturo és en una altra cosa. Quan es té un bloc d'aquest tipus ha una motivació personal per ajudar i fins potser rebre un reconeixement per això. Al seu torn estic segur que la majoria dels que escriuen continguts sobre el Programari lliure estan d'acord amb la idea de compartir. No obstant això, no oblidem que fins a les llicències més nobles com la de BSD demanen el reconeixement.
Així mateix, les referències és una forma per les quals alguns cercadors com google milloren el posicionament d'una web. Només dic, ja que el material va ser utilitzat com a mínim d'agraïment jo referenciaría aquest treball.
Em sembla genial que comparteixis però, què perds per fer una referència? Només pensa si des d'un altre bloc amb millor posicionament que aquest es dupliquessin els continguts de desdelinux sense referenciar-ho, al final sepultarien aquest bloc.
Hatteras ho va publicar fa 10 dies i llevat que l'hagi tret de la teva quadern o la teva siguis luis pont no m'explico el que em comentes, és que gairebé tot és textual. Poc probable però no impossible.
Però res, que aquest tipus de coses passen. I no sé, jo per ètica personal i per col·laborar amb un altre col·lega el referenciaría. Ja això queda al vostre criteri, tampoc crec que Hatteras es prengui això a malament, tot el contrari.
És veritat, és còpia fidel d'aquest post: http://hatteras.wordpress.com/2013/01/18/algunos-usos-practicos-del-comando-dd/
Hmm ... Vaig fer un dd if = arxiu.iso of = / mitjana / discoduro ... per error 😛
alguna forma de recuperar arxius des del disc dur ???
Podeu fer servir TestDisk
m'ha passat amic potser amb TestDisk o amb una distro live especialitzada a rescatar dades. La meva recomanació fer un backup per a pròxima ja que utilitzar aquest comando és una cosa delicat en els meus temps de novell formatie tot el disc dur sense voler i ara de reiniciar doncs ...... no cal dir que ni el grub arrenco.
Algú em pot dir que comanda utilitzar per veure el progrés de copiat amb la comanda dd, al que em refereixo és veure una barra de progrés amb el% que porta copiant.
Slds
Compa! afegint la comanda pv. En aquest mateix post ho diu gairebé a el principi i t'explica com uasarlo. Llegeix-lo una altra vegada
mitjançant aquesta comanda:
dd if = / dev / sdc | bzip2> /media/Elements/iso.gz
he aconseguit fer una imatge iso d'un disc de 16 Gb i guardar-lo en un disc de 400GB.
Però no es com seria la comanda per restaurar aquesta imatge en el disc original de 16 GB o en un altre de la mateixa capacitat
una pregunta
utilitzeu aquesta comanda per
for n in {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc;
per a un disc de 2TB
després em quedo a la consola alguna cosa asi
>
he de executar un altre ordre o com es pot demorar el procés?
gràcies i segueixin endavant
Hi ha un error de mecanografia al for ... falta a la fi de la línia «; done »quedat« for n in {1..5}; do dd if = / dev / urandom | pv | dd of = / dev / hda bs = 8b conv = notrunc; done »
molt bon article ... ..voy a posar-ho en pràctica ... salutacions cuate
Molt útil, em va servir molt gràcies
Bones Alf. Gràcies per la info.
Una pregunta. Ha alguna manera de copiar només una part del disc origen ?. El cas és, si tinc un disc de 120Gb en el qual només s'està utilitzant 25Gb i vull fer una còpia a un disc de 40Gb, només m'interessaria copiar l'espai utilitzat (25Gb), Hi ha alguna manera amb aquesta comanda?
Gràcies per endavant.
Et convindria més fer servir rsync, amb la comanda rsync -Av / path / to / origin / path / to / destiny ja estaries donant suport tots els teus permisos amb els seus corresponents permisos.
Vaig voler dir: «tots els teus arxius amb els seus corresponents permisos»
Benvolguts, algun sap perquè a l'ocupar comandament dd, arriba només a 4.2GB i indica que l'arxiu és molt gran? És una imatge d'una disc de 250GB i va a un disc extern de 1TB.
suo dd if = / dev / sda | pv | dd of = / home / fox / backup.iso
l'error dels 4Gb t'ho està donant perquè aquestes intentant fer un backup en una partició amb fs FAT16
Quin bon bloc. Molt útil entrada. Ja havia vist en altres costats els usos d'aquesta comanda, però de plànol no explicaven res de res. Gràcies.
hola tinc una maquina d'inyeccion en la qual es va perdre el programa ja que van reemplaçar la pila de la bios, no tenim suport però tenim una altra màquina igual, només compta amb floppy i port serial i paral·lel, com puc fer fer un suport d'aquesta màquina per carregar-lo en la altre, espero em pugui ajudar gràcies
només vull copiar una partició sense començar des LIVE CD. Per ejemplo.tengo un disc amb / dev / sda1, / dev / sda5, / dev / sda6 i vull fer una còpia en / dev / sda5 des d'un altre disc / dev / sdb1
la comanda és dd if = / dev / sdb1 of = / dev / sda5 bs = 1M ????
Hola com aquestes. Jo també visc a Guadalajara.
El teu article sobre la comanda DD és molt interessant. Jo vull provar algunes distribucions Linux, específicament Archlinux, però no he aconseguit fer servir la comanda DD i copiar la ISO de Archilinux que ja descarregui, en una memòria USB. No se si em puguis passar algun tick per poder arrencar amb això. Gràcies, Pere lobato
Perquè quan es grava una iso amb el comnado «dd» només serveix per bootear en algunes PC?
Ejp. tinc 2 laptos i en cap d'ella bootea la iso de cap distribució linux; però a canvi SI bootea en una vella PC de taula amb disc aneu-li
El millor és anar-se'n a la segura usant UNetbootin, amb dd també m'he quedat amb la interrogant de perquè aa vegades no funciona.
No crec que depengui de DD sinó de l'ISO. El mateix succeeix amb UNetbootin, no funciona bé amb totes les distribucions ..
De vegades funciona en totes les pc però cal afegir a l'procés el mbr i el syslinux a la usb; però això és una cosa llarg i tediós.
La part fàcil el unetbooting
Ull: no és la iso ni el dd per a mi és la forma de com la graves.
tinc un dubte si utilitzo aquesta comanda:
suo dd if = / dev / zero of = / dev / unidaddedisco
en comptes d'aquest el format a low level, és el mateix o és mes trigat que aquest:
suo dd if = / dev / zero of = / dev / unidaddedisco bs = 1M ..
Es pot utilitzar la comanda dd per esborrar un fitxer específic?
per exemple,
dd if = / dev / urandom of = / home / miarchivoaborrar
amb bs = 1M es fa més ràpid
i si vaig a fer una còpia exacta d'un disc a un altre, amb totes les seves particions (swap, sda ...) i tots dos discos iguals, però un està al PC i l'altre en un NAS per xarxa ????
gràcies
Un comentari, jo el faig servir amb status = progress a al final i no necessito de PV, així em funciona molt bé debian per veure el progeso.
I la segona, hi ha alguna manera de treure només les dades i no tota la unitat, ja que si és un disc de 2TB i sol ús 100 GB requereixo de tot aquest espai. Hi ha alguna manera de només recolzar aquests 100 GB? i quan ho passi a un altre mitjà pugui ser un disc més petit potser un 500?
Ajuda !!!
Feu la comanda
dd if = cbpp-9.0-amd64-20170621.iso of = / dev / sdb
tot bé ... però ara vull tornar a fer servir la usb com a unitat d'emmagatzematge i ...
No es munta la USB, ni tan sols apareix en GParted.
algú sap que puc fer.
PD: quin seria el millor programa per recuperar informació de discos duscos i CD DVD ....
has de re particions prova amb fdisk