O comando dd (Definición de conxunto de datos) é unha ferramenta sinxela, útil e sorprendentemente fácil de usar; Con esta ferramenta podes facer o mesmo en dispositivos: discos e particións, como con programas comerciais como Norton Ghost, en Windows ou programas gratuítos como CloneZilla, en Linux, cunha liña de comandos curta.
Índice
Sintaxe básica:
A sintaxe máis básica para usar o comando dd sería a seguinte:
sudo dd if=origen of=destino
Onde se significa "ficheiro de entrada = ficheiro de entrada“, É dicir, o que quere copiar e de medios "ficheiro de saída = ficheiro de saída“, É dicir, o ficheiro de destino (onde se copiarán os datos);orixe e O destino pode ser dispositivos (lector de CD ou DVD, disco duro, disquete, pendrive, partición, etc.), ficheiro de copia de seguridade ou imaxe de disco, etc., pero non cartafoles ou subcarpetas.
Para un bo uso deste comando, o primeiro é sempre ter claro como se chaman particións / discos duros en Linux (/ dev / sda1 por exemplo; / dev deriva de device = device, en inglés). para coñecer o disco / partición de orixe e destino, algo que podemos descubrir facilmente co comando sudo fdisk -lo con algún programa de partición gráfica como gparted. Pódese consultar toda a información sobre o comando dd co comando man dd e info dd,
Este comando debe usarse con precaución e comprobando sempre a orde e o nome dos discos / particións, porque do mesmo xeito que se clona un disco, bórrano en pouco tempo.
Sintaxe co comando pv: Usar o comando dd coa sintaxe anterior ten un pequeno inconveniente, xa que é un comando moi reservado - non dá información - porque cando se executa, o aviso do terminal permanece inmóbil, polo que non sabemos que é o que está a suceder e canto tempo lle queda para rematar de executar. Este pequeno inconveniente pódese resolver engadindo o comando pv, (*) - que actúa como un tubo terminal que mide os datos que o atravesan - á sintaxe do comando dd, polo que agora a sintaxe sería:
dd if=origen |pv|dd of=destino
Como resultado, obteriamos unha especie de barra de progreso no terminal, a información sobre bytes transferidos, o tempo que estivo en execución e a velocidade de transferencia, todo en tempo real.
(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd de = / dev / mmcblk0p2 1,630GB 0:21:30 [1,12MB / s] [
Ao rematar, móstranos estatísticas da taxa de transferencia, o total de bytes transferidos e o tempo total que tardou en transferir todos os datos.
(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd de = / dev / mmcblk0p2 10530816 + 0 rexistros lidos <=> 10530816 + 0 rexistros escritos 5391777792 bytes (5.4 GB) copiados, 3873,48 s, 1,4 MB / s 5,02 GB 1:04:33 [1,33MB / s] [<=> 10530816 + 0 rexistros lidos <=> 10530816 + 0 rexistros escritos 5391777792 bytes (5.4 GB) copiados, 3873,48, 1,4 s, XNUMX MB / s (alf) - (~) └──┤
(*) Comprobe antes de executar calquera liña de comando con esta segunda sintaxe que temos o paquete pv instalado no sistema ou instáleo se non o temos: ambos con Synaptic.
Vexamos algúns exemplos prácticos e opcións deste comando (na súa versión co truco explicado anteriormente co comando pv):
A) Acerca de discos duros e particións:
= Clonar un disco duro:
Con isto clonaríamos o disco hda en hdb. (Discos IDE):
sudo dd if=/dev/hda |pv|dd of=/dev/hdb bs=1M
Con isto clonaríamos o disco sda en sdb. (Discos SATA):
sudo dd if=/dev/sda |pv|dd of=/dev/sdb bs=1M
Coa opción bs = 1M, conséguese que tanto a lectura como a escritura se fagan en bloques de 1 megabyte, (menos, sería máis lento pero máis seguro e, con máis, corremos o risco de perder datos no camiño).
Ten en conta que deste xeito o disco se grava "tal cal", MBR, táboa de particións, espazo baleiro, etc ..., polo que só podes gravar nun disco do mesmo ou maior tamaño.
= Escribe só a primeira partición (hda1) do disco de orixe no disco de destino (hdb):
sudo dd if=/dev/hda1 |pv|dd of=/dev/hdb bs=1M
= Gravar todo o disco (hda) na primeira partición (hdb1) do disco de destino:
sudo dd if=/dev/hda |pv|dd of=/dev/hdb1 bs=1M
= Crear unha imaxe - pode ser bin ou iso - desde o disco duro (hda), no directorio / home:
sudo dd if=/dev/hda |pv|dd of=/home/hda.bin
= Borrar completamente a información dun disco: para facelo, enche o disco con caracteres aleatorios cinco veces. Non haberá rastro de información no disco:
for n in {1..5}; do dd if=/dev/urandom |pv|dd of=/dev/hda bs=8b conv=notrunc;
= Borrar calquera partición e disco enteiro de calquera dispositivo:
sudo dd if=/dev/zero |pv|dd of=/dev/sdx
(Borrado completo do disco)
sudo dd if=/dev/zero |pv|dd of=/dev/sdxa
(Borrado da partición do disco)
onde: x é o disco a borrar, a é a partición a borrar
Esta operación é moi útil para borrar completamente calquera partición, ademais os datos que se borrarán non se poden recuperar, polo tanto, é un borrado de baixo nivel e moi seguro, moi útil por exemplo cando os pendrives se infectan con virus co noso queridas fiestras.
B) Nun CD / DVD
= Crear / montar unha imaxe .iso desde un CD (ou DVD)
Para crear a imaxe .iso dun CD no directorio / home:
sudo dd if=/dev/cdrom |pv|dd of=/home/imagendeCD.iso
Para montar a imaxe .iso desde o CD:
sudo mount -o loop imagedeCD.iso /mnt/home
= Recuperar un DVD raiado (Isto non recupera todo o DVD, neste caso só os sectores lexibles). Tamén é adecuado para discos duros defectuosos:
sudo dd if=/dev/cdrom |pv|dd of=/home/dvd_recuperado.iso conv=noerror,sync
A opción noerror úsase para evitar erros de lectura en calquera situación.
C) Acerca de MBR e VBS:
= Copiar / restaurar o rexistro de arranque principal (MBR):
Para copiar o MBR:
sudo dd if=/dev/hda |pv|dd of=mbr count=1 bs=512
Para restaurar o MBR:
sudo dd if=mbr |pv|dd of=/dev/hda
= Limpar a nosa táboa de particións e MBR:
sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=512 count=1
= Borra o MBR pero non toca a táboa de particións (moi útil para borrar o GRUB sen perder datos nas particións):
sudo dd if=/dev/zero |pv|dd of=/dev/hda bs=446 count=1
= Copiar / restaurar o sector de arranque por volume (VBS):
Para copiar o VBS:
sudo dd if=/dev/hda |pv|dd of=/home/sector_arranque_hda count=1 bs=512
Para restaurar o VBS:
sudo dd if=/home/sector_arranque_hda |pv|dd of=/dev/hda
D) Outros:
= Gravar unha imaxe de disco no noso directorio / home, saltando os erros do disco (moi útil para os discos que están morrendo):
sudo dd conv=noerror if=/dev/hda |pv|dd of=~/home/imagen_disco_con_errores.iso
= Crear un ficheiro baleiro de 1 Mb:
sudo dd if=/dev/zero |pv|dd of=archivo_nuevo_vacio bs=1024 count=1024
= Crear un ficheiro de intercambio de 2 GB:
sudo dd if=/dev/zero |pv|dd of=/swapspace bs=4k count=2048M
mkswap /swapspace
swapon /swapspace
= Converter todas as letras en maiúsculas:
sudo dd if=miarchivo |pv|dd of=miarchivo conv=ucase
Use o comando dd cun programa de contorno gráfico: Gdiskdump, é un contorno gráfico para este comando dd que facilita a tarefa de clonar particións ou discos, de xeito rápido e sinxelo. Pódese descargar desde a páxina https://launchpad.net/gdiskdump/ Unha vez que o abrimos, con permisos de root - sudo gdiskdump -, vemos que o programa é moi sinxelo de usar, xa que só temos que indicarlle a partición ou disco a clonar (Formato de entrada) e o seu destino (Formato de saída).
43 comentarios, deixa os teus
Case me volvín diabético co mal uso do comando dd.
por certo, cal sería a diferenza con dd_rescue?
ddrescue por defecto non se detén nos erros de lectura e tenta por varios medios recuperar información ilegible.
jajaja tamén usei moi mal o comando dd, é moito máis poderoso do que pensaba.
Comento que creo que todos os usuarios de arco utilizaron nalgún momento
@ sieg84, a diferenza é que o dd foi interrompido con algún erro de lectura ou dispositivo, neste caso isto non ocorrerá xa que o bloque danado o lerá un número determinado de veces e continuará co seguinte, tamén proporciona a vantaxe de que Podemos executalo varias veces na mesma imaxe e non comezará de cero pero intentará completala.
Cabe mencionar que dd_rescue nunca o usei.
Se hai algunha GUI feita en qt para KDE que use este comando? ou teño que dimitir?
Gdiskdump é máis que unha GUI para este comando (está baseado nel) e aínda que non sei se o fixeron en qt (creo que non) case seguro que funciona para vostede en KDE
grazas pola aclaración.
Só usei dd_rescue para copiar ISO a USB (sobre todo porque na wiki de openSUSE o tiñan).
dd_rescue tu.iso / dev / sdX
o que me gusta é que amose unha barra de progreso:
http://box.jisko.net/i/110db781.png
Alfa:
Hai pouco vin este mesmo post publicado no blog de Hatteras. É probable que non o tome mal, pero non o sei, polo menos sería unha cortesía referilo. Así tamén gaña no posicionamento web.
Non quero crear un dilema con isto, pero a primeira vista o artigo parece 95% idéntico, agás as capturas de pantalla do terminal que adaptaches. Mesmo mencionou as súas fontes.
Interesante admito que | pv | non o coñecía.
Krel Creo que a fonte está en wiki de Ubuntu ou saúdos de arco.
@krel, o linux é isto:
Ao longo da miña viaxe neste mundo lin e recollín cousas, teño un caderno con máis de 400 publicacións que coloquei en Ubuntu México, que foi a comunidade onde máis acheguei nos meus primeiros tempos, por desgraza pódense repetir cousas, se repasas a gran cantidade de publicacións na rede, case están na mesma orde, a cousa é que a maioría son máis curtas.
Podo publicar outras 5 publicacións na semana e podes atopar outras similares ou iguais, a razón? Ubuntu ten a maior cantidade de foros / blogs da rede.
En ningún caso creo que haxa un dilema e, se os administradores consideran eliminalo, non me ofendería nin molestaría, acato as regras e o que segue, entre as miñas notas 8 de que non as teño en orde) Estou buscando engadir algo para evitar coincidencias.
lembranzas
Non é ningún misterio para ninguén que como máximo só o 10% do contido que se xera na web sexa novo. Co cal os outros 90 contén contido duplicado, renovado ou rescatado, e non digo que isto sexa menos importante, ao contrario, é unha forma de difusión do coñecemento.
Non obstante, onde paro é outra cousa. Cando tes un blog deste tipo hai unha motivación persoal para axudar e quizais incluso recibir recoñecemento por el. Ao mesmo tempo, estou seguro de que a maioría dos que escriben contido sobre software libre están de acordo coa idea de compartir. Non obstante, non esquezamos que ata as licenzas máis nobres como BSD piden recoñecemento.
Ademais, as referencias son un xeito en que algúns motores de busca como google melloran o posicionamento dun sitio web. Só digo, xa que o material foi usado como mínimo de agradecemento, referiríame a ese traballo.
Paréceme xenial que compartas, pero que perdes facendo unha referencia? Pense só se doutro blogue con mellor posicionamento que este, o contido de desdelinux se duplicase sen facer referencia a el, ao final enterrarían este blogue.
Hatteras publicouno hai 10 días e, a menos que o sacou do teu caderno ou sexas Luis Puente, non podo explicar o que dis, é que case todo é textual. Improbable pero non imposible.
Pero nada, que este tipo de cousas acontecen. E non o sei, por ética persoal e por colaborar con outro compañeiro referiríame a el. Depende de ti, tampouco creo que Hatteras tome isto mal, todo o contrario.
É certo, é unha copia verdadeira desta publicación: http://hatteras.wordpress.com/2013/01/18/algunos-usos-practicos-del-comando-dd/
Hmm ... Fixen un dd if = file.iso de = / media / disco duro ... por erro 😛
algunha forma de recuperar ficheiros do disco duro ???
Podes usar Testdisk
Un amigo sucedeume quizais con testdisk ou cunha distro especializada en directo para rescatar datos. A miña recomendación de facer unha copia de seguridade para a próxima vez que empregue ese comando é algo delicado nos meus días de novato para formatear todo o disco duro sen querer e agora reiniciar ben ... Non fai falta dicir que nin o grub comezou.
Alguén me pode dicir que comando empregar para ver o progreso da copia co comando dd, o que quero dicir é ver unha barra de progreso co% que foi copiando.
slds
Amigo! engadindo o comando pv. Neste mesmo post di case ao comezo e explica como usalo. Lelo de novo
usando este comando:
dd if = / dev / sdc | bzip2> /media/Elements/iso.gz
Conseguín facer unha imaxe iso dun disco de 16 GB e gardala nun disco de 400 GB.
Pero non sei cal sería o comando para restaurar esa imaxe no disco orixinal de 16 GB ou noutro da mesma capacidade
unha pregunta
use este comando para
para n en {1..5}; faga dd se = / dev / urandom | pv | dd de = / dev / hda bs = 8b conv = notrunc;
para un disco de 2 TB
entón quedo na consola algo así
>
Debo executar outro comando ou canto tempo pode levar o proceso?
grazas e segue adiante
Hai un erro de dixitación no for ... falta ao final da liña «; feito »quedou« durante n en {1..5}; faga dd se = / dev / urandom | pv | dd de = / dev / hda bs = 8b conv = notrunc; feito »
moi bo artigo ... .. vou poñelo en práctica ... saúdos amigo
Moi útil, axudoume moito grazas
Bo Alf. Grazas pola información.
Unha pregunta. Hai algún xeito de copiar só unha parte do disco de orixe? O caso é que, se teño un disco de 120 GB no que só se están a usar 25 GB e quero facer unha copia nun disco de 40 GB, só me interesaría copiar o espazo usado (25 GB), ¿hai algún xeito con este comando?
Grazas anticipadamente.
Sería mellor para ti usar rsync, co comando rsync -av / path / to / origin / path / to / destiny xa estarías facendo unha copia de seguridade de todos os teus permisos cos seus correspondentes permisos.
Quería dicir: "todos os teus ficheiros cos seus correspondentes permisos"
Estimado, ¿alguén sabe por que ao ocupar o comando dd, só alcanza os 4.2 GB e indica que o ficheiro é moi grande? É unha imaxe dun disco de 250 GB e vai a un disco externo de 1 TB.
sudo dd if = / dev / sda | pv | dd de = / home / fox / backup.iso
O erro de 4 Gb dálle a vostede porque está intentando facer unha copia de seguridade nunha partición con fs FAT16
Que bo blogue. Entrada moi útil. Xa vira os usos deste comando noutros lugares, pero non explicaron nada. Grazas.
ola teño unha máquina de inxección na que se perdeu o programa desde que substituíron a pila de bios, non temos copia de seguridade pero temos outra mesma máquina, só ten disquete e porto serie e paralelo, como podo facer unha copia de seguridade desta máquina para cargalo no outro, espero que me poidades axudar grazas
Só quero copiar unha partición sen comezar desde o CD EN DIRECTO. Por exemplo, teño un disco con / dev / sda1, / dev / sda5, / dev / sda6 e quero facer unha copia en / dev / sda5 desde outro disco / dev / sdb1
o comando é dd if = / dev / sdb1 de = / dev / sda5 bs = 1M ????
Olá. Como estás. Eu tamén vivo en Guadalaxara.
O teu artigo sobre o comando DD é moi interesante. Quero probar algunhas distribucións de Linux, concretamente Archlinux, pero non fun capaz de usar o comando DD e copiar a ISO Archilinux que xa descarguei nunha memoria USB. Non sei se me podes pasar unha marca para comezar con isto. Grazas, Pedro lobato
Porque cando se grava un iso co comando "dd" só se usa para arrincar nalgunhas PC?
Exp. Teño 2 portátiles e ningún deles bota o iso de ningunha distribución Linux; pero pola contra, arrinca nun vello PC de escritorio con disco inactivo
O mellor é xogalo seguro usando unetbootin, con dd tamén me quedou a pregunta de por que ás veces non funciona.
Non creo que dependa de DD senón de ISO. O mesmo que con Unetbootin, non funciona ben con todas as distribucións.
Ás veces funciona en todos os ordenadores, pero hai que engadir mbr e syslinux ao usb ao proceso; pero isto é longo e tedioso.
O máis sinxelo do desinicio
Teña coidado: para min non é iso nin o dd, é a forma de gravalo.
Teño dúbida de se uso este comando:
sudo dd if = / dev / zero de = / dev / diskdrive
En vez diso, o formato de baixo nivel é o mesmo ou leva máis tempo que isto:
sudo dd if = / dev / zero of = / dev / diskdrive bs = 1M ..
¿Pode usarse o comando dd para eliminar un ficheiro específico?
por exemplo,
dd if = / dev / urandom de = / home / myfile delete
con bs = 1M faise máis rápido
E se vou facer unha copia exacta dun disco a outro, con todas as súas particións (swap, sda ...) e os dous discos iguais, pero un está no PC e o outro nun NAS a través da rede ????
grazas
Un comentario, utilízoo con status = progreso ao final e non necesito pv, polo que debian funciona moi ben para que vexa o progreso.
E o segundo, hai un xeito de obter só os datos e non a unidade enteira, xa que se se trata dun disco de 2 TB e só uso 100 GB, necesito todo ese espazo. Hai algún xeito de facer unha copia de seguridade deses 100 GB? E cando o paso a outro soporte podería ser un disco máis pequeno quizais un de 500?
Axuda !!!
Realice o comando
dd if = cbpp-9.0-amd64-20170621.iso de = / dev / sdb
todo ben ... pero agora quero usar o USB como unidade de almacenamento e ...
O USB non está montado, nin sequera aparece en GParted.
Alguén sabe que podo facer.
PS: que sería o mellor programa para recuperar información de discos e CD DVD ...
ten que repetir a proba de partición con fdisk