Usando o comando dd

O comando dd (Definição de Conjunto de Dados) é uma ferramenta simples, útil e surpreendentemente fácil de usar; Com esta ferramenta você pode fazer o mesmo, em dispositivos: discos e partições, como em programas comerciais como o Norton Ghost, no Windows ou programas gratuitos como o CloneZilla, no Linux, com apenas uma curta linha de comando.

Sintaxe básica:

A sintaxe mais básica para usar o comando dd seria esta:

sudo dd if=origen of=destino

onde se significa "arquivo de entrada = arquivo de entrada“, Isto é, o que você deseja copiar e de meios "arquivo de saída = arquivo de saída“, Ou seja, o arquivo de destino (para onde os dados serão copiados);origem e O destino pode ser dispositivos (leitor de CD ou DVD, disco rígido, disquete, pendrive, partição, etc.), arquivo de backup ou imagem de disco, etc., mas não pastas ou subpastas.

Para o uso fácil deste comando, a primeira coisa é sempre deixar claro quais partições / discos rígidos são chamados no Linux (/ dev / sda1 por exemplo; / dev deriva de device = device, em inglês). para saber o disco / partição de origem e destino, algo que podemos descobrir facilmente com o comando sudo fdisk -lo com algum programa de partição gráfica como o gparted. Todas as informações sobre o comando dd podem ser consultadas com o comando man dd e info dd,

Este comando deve ser utilizado com cautela, sempre verificando a ordem e o nome dos discos / partições, pois assim que um disco é clonado, ele o apaga em um instante.

Sintaxe com o comando pv: Usar o comando dd com a sintaxe anterior tem uma pequena desvantagem, pois é um comando muito reservado - não dá informações - porque quando é executado, o prompt do terminal permanece imóvel, por isso não sabemos o que está acontecendo e quanto tempo resta para terminar a execução. Este pequeno inconveniente pode ser resolvido adicionando o comando pv, (*) - que atua como um tubo terminal que mede os dados que passam por ele - à sintaxe do comando dd, de forma que agora a sintaxe seria:

dd if=origen |pv|dd of=destino

Como resultado, obteríamos no terminal uma espécie de barra de progresso, as informações sobre os bytes transferidos, o tempo de execução e a taxa de transferência, tudo em tempo real.

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

Além disso, quando concluído, ele nos mostra estatísticas da taxa de transferência, o total de bytes transferidos e o tempo total que levou para transferir todos os dados.

(alf) - (~) └──┤ dd if = / devmmcblk0p1 | pv | dd of = / dev / mmcblk0p2 10530816 + 0 registros lidos <=> 10530816 + 0 registros escritos 5391777792 bytes (5.4 GB) copiados, 3873,48 s, 1,4 MB / s 5,02 GB 1:04:33 [1,33 MB / s] [<=> 10530816 + 0 registros lidos <=> 10530816 + 0 registros gravados 5391777792 bytes (5.4 GB) copiados, 3873,48, 1,4 s, XNUMX MB / s (alf) - (~) └──┤

(*) Verifique antes de executar qualquer linha de comando com esta segunda sintaxe, se temos o pacote pv instalado no sistema, ou instale-o se não o tivermos: ambos com Synaptic.

Vejamos alguns exemplos práticos e opções deste comando (em sua versão com o truque explicado acima com o comando pv):

A) Sobre discos rígidos e partições:

= Clonar um disco rígido:

Com isso, clonaríamos o disco hda em hdb. (Discos IDE):

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

Com isso, clonaríamos o disco sda em sdb. (Discos SATA):

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

Com a opção bs = 1M, é possível que tanto a leitura quanto a gravação sejam feitas em blocos de 1 megabyte (menos, seria mais lento, mas mais seguro, e com mais corremos o risco de perder dados ao longo do caminho).

Lembre-se de que desta forma o disco é gravado "como está", MBR, tabela de partição, espaço vazio, etc ..., portanto, você só pode gravar em um disco do mesmo tamanho ou maior.

= Grave apenas a primeira partição (hda1) do disco de origem no disco de destino (hdb):

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

= Grave todo o disco (hda) na primeira partição (hdb1) do disco de destino:

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

= Criar uma imagem - pode ser bin ou iso - a partir do disco rígido (hda), no diretório / home:

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

= Apagar completamente as informações de um disco: para fazer isso, preencha o disco com caracteres aleatórios, cinco vezes. Não haverá nenhum vestígio de informação no disco:

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

= Apague qualquer partição e disco inteiro de qualquer dispositivo:

sudo dd if=/dev/zero |pv|dd of=/dev/sdx (Apagamento total do disco)

sudo dd if=/dev/zero |pv|dd of=/dev/sdxa (Apagar partição do disco)

onde: x é o disco a ser apagado, a é a partição a ser apagada

Esta operação é muito útil para apagar completamente qualquer partição, além disso os dados que serão apagados não podem ser recuperados, portanto é um apagamento de baixo nível e muito seguro, muito útil por exemplo quando os pendrives se infectam com vírus de nossas queridas janelas .

B) Em um CD / DVD

= Criar / montar uma imagem .iso de um CD (ou DVD)

Para criar a imagem .iso de um CD no diretório / home:

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

Para montar a imagem .iso do CD:

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

= Recuperar um DVD riscado (Isso não recupera o DVD inteiro, neste caso apenas os setores legíveis). Também é adequado para discos rígidos com defeito:

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

A opção noerror é usada para evitar erros de leitura em qualquer situação.

C) Sobre MBR e VBS:

= Copiar / Restaurar Registro Mestre de Inicialização (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

= Limpe nosso MBR e tabela de partição:

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

= Limpa o MBR, mas não toca na tabela de partição, (muito útil para apagar o GRUB sem perder dados nas partições):

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

= Copiar / Restaurar Setor de inicialização de 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 uma imagem de disco em nosso diretório / home, ignorando erros de disco (muito útil para discos que estão morrendo):

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

= Crie um arquivo vazio de 1 Mb:

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

= Crie um arquivo de troca de 2 Gb:

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

= Converter todas as letras em maiúsculas:

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

Use o comando dd com um programa de ambiente gráfico: Gdiskdump, é um ambiente gráfico para este comando dd que facilita a tarefa de clonar partições ou discos, com rapidez e facilidade. Ele pode ser baixado da página https://launchpad.net/gdiskdump/ Assim que o abrimos, com permissões de root - sudo gdiskdump -, vemos que o programa é muito fácil de usar, pois só temos que dizer a partição ou disco a clonar (Formato de entrada) e seu destino (Formato de saída).


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   sieg84 dito

    Quase fiquei diabético com o uso indevido do comando dd.
    aliás, qual seria a diferença com dd_rescue?

    1.    sempre dito

      O ddrescue por padrão não para em erros de leitura e tenta de vários modos recuperar informações ilegíveis.

    2.    sheko dito

      hahahha Também usei muito mal o comando dd, é muito mais poderoso do que eu pensava.

  2.   apodrece87 dito

    Eu comento que acredito que todo usuário de arch em algum ponto usou

  3.   Alf dito

    @ sieg84, a diferença é que o dd foi interrompido com algum erro de leitura ou dispositivo, neste caso isso não acontecerá pois o bloco danificado irá lê-lo um certo número de vezes e continuar com o próximo, tem também a vantagem de Podemos executá-lo várias vezes na mesma imagem e não começará do zero, mas tentaremos concluí-lo.

    Vale ressaltar que dd_rescue nunca usei.

    1.    Merlin, o debianita dito

      Se houver alguma GUI feita no qt para KDE que use este comando? ou eu tenho que renunciar.?

      1.    Julho dito

        Gdiskdump é mais do que uma GUI para este comando (é baseado nele) e embora eu não saiba se eles fizeram isso no qt (acho que não), quase certamente funciona para você no KDE

    2.    sieg84 dito

      Obrigado pelo esclarecimento.
      Só usei o dd_rescue para copiar ISO para USB (principalmente porque no wiki do openSUSE eles o tinham).
      dd_rescue tu.iso / dev / sdX
      o que eu gosto é que mostra uma barra de progresso:
      http://box.jisko.net/i/110db781.png

  4.   krel dito

    Alfa:
    Recentemente, vi esta mesma postagem no Blog da Hatteras. É provável que ele não leve a mal, mas eu não sei, pelo menos por cortesia seria bom referir-me a isso. Então ele também ganha em posicionamento na web.

    Não quero criar um dilema com isso, mas à primeira vista o artigo parece 95% idêntico a mim, exceto pelas capturas de tela do terminal que você adaptou. Ele até mencionou suas fontes.

  5.   Merlin, o debianita dito

    Interessante, admito que | pv | não o conhecia.

    Krel Eu acho que a fonte está no ubuntu wiki ou arch saudações.

  6.   Alf dito

    @krel, a coisa do linux é esta:

    Ao longo de minha jornada neste mundo li e colecionei coisas, tenho um notebook com mais de 400 posts que coloquei no Ubuntu México, que foi a comunidade onde mais contribuí nos meus primeiros dias, infelizmente as coisas podem se repetir, se vc revisa a grande quantidade de postagens na net, elas ficam quase na mesma ordem, a coisa é que a maioria é mais curta.

    Posso publicar mais 5 posts na semana e você encontra outros parecidos ou iguais, o motivo? Ubuntu tem a maioria dos fóruns / blogs da rede.

    De maneira nenhuma eu acho que vai haver um dilema, e, se os administradores considerarem excluí-lo, isso não me ofenderia ou incomodaria de forma alguma, eu cumpro as regras e o que se segue, entre minhas notas 8 que não faço coloque-os em ordem) Estou tentando adicionar algo para evitar coincidência.

    lembranças

    1.    krel dito

      Não é nenhum mistério para ninguém que no máximo apenas 10% do conteúdo gerado na web é novo. Com o qual os outros 90 são conteúdos duplicados, renovados ou resgatados, e não estou dizendo que isso seja menos importante, pelo contrário, é uma forma de difusão do conhecimento.

      No entanto, onde eu paro é outra coisa. Quando você tem um blog desse tipo, há uma motivação pessoal para ajudar e talvez até receber reconhecimento por isso. Ao mesmo tempo, tenho certeza de que a maioria dos que escrevem conteúdo sobre Software Livre concorda com a ideia de compartilhamento. Porém, não podemos esquecer que até as licenças mais nobres como o BSD pedem reconhecimento.

      Além disso, as referências são uma forma pela qual alguns motores de busca como o google melhoram o posicionamento de uma web. Só estou dizendo, como o material foi usado como um mínimo de agradecimento, me referiria a esse trabalho.

      Acho ótimo você compartilhar, mas o que você perde fazendo uma referência? Pense só se de outro blog com melhor posicionamento que este o conteúdo deste fosse duplicado. desdelinux Sem fazer referência, acabariam por enterrar este blog.

      Hatteras publicou há 10 dias e a menos que ele tenha tirado do seu caderno ou você seja Luis Puente, não consigo entender o que você está dizendo, é que quase tudo é textual. Improvável, mas não impossível.

      Mas nada, que esse tipo de coisa aconteça. E não sei, por ética pessoal e por colaborar com outro colega me referiria a ele. Isso depende de você, não acho que Hatteras interprete mal também, muito pelo contrário.

      1.    msx dito
  7.   O anterior dito

    Hmm ... fiz um dd if = file.iso de = / media / hard drive ... por engano 😛
    alguma maneira de recuperar arquivos do disco rígido ??

    1.    elav. dito

      Você pode usar o Testdisk

    2.    Merlin, o debianita dito

      Um amigo me aconteceu talvez com o testdisk ou com uma distro especializada ao vivo para resgatar dados. Minha recomendação para fazer um backup para a próxima vez, já que usar esse comando é algo delicado em meus dias de novato, formatar o disco rígido inteiro sem querer e agora reiniciar bem ... Não é preciso dizer que nem o grub começou.

  8.   Raul dito

    Alguém pode me dizer qual comando usar para ver o andamento da cópia com o comando dd, o que quero dizer é ver uma barra de progresso com o% que foi copiando.

    SLDS

    1.    Julho dito

      Amigo! adicionando o comando pv. Nesse mesmo post ele fala quase no começo e explica como usar. Leia isso novamente

  9.   pedro dito

    usando este comando:
    dd if = / dev / sdc | bzip2> /media/Elements/iso.gz
    Consegui fazer uma imagem ISO de um disco de 16 Gb e salvá-la em um disco de 400 Gb.
    Mas eu não sei qual seria o comando para restaurar aquela imagem para o disco original de 16 GB ou para outro com a mesma capacidade

  10.   Luis Rodriguez dito

    uma pergunta

    use este comando para
    para n em {1..5}; faça dd se = / dev / urandom | pv | dd de = / dev / hda bs = 8b conv = notrunc;
    para um disco de 2 TB
    então eu fico no console algo assim
    >
    Devo executar outro comando ou quanto tempo o processo pode levar?

    obrigado e continue

    1.    Jazz dito

      Há um erro de digitação em for ... ausente no final da linha «; feito »ficou« por n em {1..5}; faça dd se = / dev / urandom | pv | dd de = / dev / hda bs = 8b conv = notrunc; feito "

  11.   Henry Salazar dito

    artigo muito bom ... vou colocá-lo em prática ... saudações amigo

  12.   Marcos_tux dito

    Muito útil, me ajudou muito obrigado

  13.   EDFR dito

    Good Alf. Obrigado pela informação.

    Uma pergunta. Existe uma maneira de copiar apenas parte do disco de origem? O caso é, se eu tenho um disco de 120 Gb no qual apenas 25 Gb estão sendo usados ​​e quero fazer uma cópia para um disco de 40 Gb, eu só estaria interessado em copiar o espaço usado (25 Gb).
    Agradecemos antecipadamente.

    1.    yukiteru dito

      Seria melhor para você usar rsync, com o comando rsync -av / path / to / origin / path / to / destiny você já estaria fazendo backup de todas as suas permissões com as permissões correspondentes.

    2.    yukiteru dito

      Eu quis dizer: "todos os seus arquivos com as permissões correspondentes"

  14.   FOXSPY dito

    Prezado, alguém sabe por que ao ocupar o comando dd, ele atinge apenas 4.2GB e indica que o arquivo é muito grande? É uma imagem de um disco de 250 GB e vai para um disco externo de 1 TB.

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

    1.    Abdutor dito

      O erro de 4 Gb está dando a você porque você está tentando fazer um backup em uma partição com fs FAT16

  15.   Berna dito

    Que bom blog. Entrada muito útil. Eu já tinha visto os usos desse comando em outro lugar, mas eles não explicaram nada. Obrigado.

  16.   carlos torres dito

    ola tenho uma maquina injetora em que o programa se perdeu desde que trocaram o bios stack, nao temos backup mas temos outra maquina igual, ela só tem disquete e porta serial e paralela, como posso fazer um backup desta maquina para carregá-lo no outro, espero que possa me ajudar obrigado

  17.   ernesto dito

    Eu só quero copiar uma partição sem iniciar do CD LIVE. Por exemplo, eu tenho um disco com / dev / sda1, / dev / sda5, / dev / sda6 e quero fazer uma cópia para / dev / sda5 de outro disco / dev / sdb1

    o comando é dd if = / dev / sdb1 of = / dev / sda5 bs = 1M ????

  18.   Pedro Lobato dito

    Oi, como vai. Eu também moro em Guadalajara.
    Seu artigo sobre o comando DD é muito interessante. Quero experimentar algumas distribuições Linux, especificamente Archlinux, mas não consegui usar o comando DD e copiar o ISO do Archilinux que já baixei para um stick USB. Não sei se você pode me passar uma marca para começar com isso. Obrigado Pedro lobato

  19.   vencedor dito

    Porque quando uma iso é gravada com o comando "dd" ela só funciona para inicializar em alguns PCs?
    Exp. Tenho 2 laptops e nenhum deles inicializa a iso de qualquer distribuição Linux; mas, ao contrário, ele inicializa em um PC desktop antigo com disco inativo

    1.    seb dito

      A melhor coisa é jogar pelo seguro usando unetbootin, com o dd eu também fiquei com a questão de por que às vezes ele não funciona.

      1.    elav. dito

        Não acho que dependa do DD, mas sim do ISO. A mesma coisa com o Unetbootin, não funciona bem com todas as distribuições.

  20.   vencedor dito

    Às vezes funciona em todos os PCs, mas você precisa adicionar o mbr e o syslinux ao usb para o processo; mas isso é longo e tedioso.
    A parte mais fácil de cancelar a inicialização

    Cuidado: não é o iso ou o dd para mim, é a forma como você grava.

  21.   danny dito

    Tenho uma dúvida se uso este comando:
    sudo dd if = / dev / zero de = / dev / diskdrive
    Em vez disso, a formatação de baixo nível é a mesma ou leva mais tempo do que isso:
    sudo dd if = / dev / zero de = / dev / diskdrive bs = 1M ..

  22.   arg0s dito

    O comando dd pode ser usado para excluir um arquivo específico?

    por exemplo

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

  23.   arg0s dito

    com bs = 1M torna-se mais rápido

  24.   alex dito

    E se eu vou fazer uma cópia exata de um disco para outro, com todas as suas partições (swap, sda ...) e os dois discos iguais, mas um está no PC e o outro em um NAS da rede? ???
    obrigado

  25.   Gerardo dito

    Um comentário, eu uso com status = progress no final e não preciso do pv, então o debian funciona muito bem para eu ver o progresso.
    E a segunda, existe uma maneira de pegar apenas os dados e não a unidade inteira, já que se for um disco de 2 TB e eu usar apenas 100 GB, preciso de todo esse espaço. Existe uma maneira de simplesmente fazer backup desses 100 GB? E quando eu passar para outro meio, pode ser um disco menor talvez 500?

  26.   Alexander dito

    Ajuda !!!
    Execute o comando
    dd if = cbpp-9.0-amd64-20170621.iso de = / dev / sdb

    tudo bem ... mas agora quero usar o usb como unidade de armazenamento e ...

    O USB não está montado, nem mesmo aparece no GParted.

    Alguém sabe o que posso fazer.

    PS: qual seria o melhor programa para recuperar informações de discos e CD DVDs….

    1.    anônimo dito

      você deve fazer um novo teste de partição com fdisk