Articles

dd (Unix) (Português)

Posted by admin

o comando dd pode ser usado para uma variedade de propósitos. Para comandos de cópia simples, ele tende a ser mais lento do que as alternativas específicas do domínio, mas ele se destaca em sua capacidade única de “sobrepor ou truncar um arquivo em qualquer ponto ou procurar em um arquivo”, uma interface de baixo nível para a API de arquivo Unix.

Data transferEdit

dd pode duplicar os dados através de ficheiros, dispositivos, partições e volumes. Os dados podem ser entrada ou saída de e para qualquer um destes; mas há diferenças importantes a respeito da saída ao ir para uma partição., Além disso, durante a transferência, os dados podem ser modificados usando as opções conv para atender ao meio. (Para este propósito, no entanto, dd é mais lento do que cat.)

a opção noerror significa continuar se houver um erro, enquanto a opção de sincronização faz com que os blocos de saída sejam acolchoados.

modificationEdit

dd pode modificar os dados no lugar., Por exemplo, este substitui o primeiro 512 bytes de um arquivo com null bytes:

dd if=/dev/zero of=caminho/para/arquivo bs=512 count=1 conv=notrunc

O notrunc conversão opção significa que não truncar o arquivo de saída — isto é, se o arquivo de saída já existe, basta substituir o especificado bytes e deixar o resto do arquivo de saída sozinho. Sem esta opção, o dd criaria um ficheiro de saída com 512 bytes de comprimento.,

Master boot record backup and restoreEdit

the example above can also be used to back up and restore any region of a device to a file, such as a master boot record.

para duplicar os dois primeiros sectores de uma disquete:

dd if=/dev/fd0 of=MBRboot.img bs = 512 count=2

Disk wipeEdit

Main article: Data erasure

por razões de segurança, às vezes é necessário ter uma limpeza de disco de um dispositivo descartado. Isso pode ser conseguido através de uma “transferência de dados” dos arquivos especiais Unix.,

  • para escrever zeros num disco, use dd if=/dev/zero of=/dev/sda bs=16M.
  • para escrever dados aleatórios em um disco, use dd if=/dev/urandom of=/dev/sda bs=16M.

quando comparado com o exemplo de modificação de dados acima, a opção de conversão de notrunc não é necessária, pois não TEM Efeito quando o arquivo de saída do dd é um dispositivo de bloco.

a opção bs = 16M faz dd ler e escrever 16 mebibytes de cada vez. Para sistemas modernos, um tamanho de bloco ainda maior pode ser mais rápido., Note que encher a unidade com dados aleatórios pode demorar mais do que zerar a unidade, porque os dados aleatórios devem ser criados pela CPU, enquanto criar zeros é muito rápido. Em unidades de disco rígido modernas, zerando a unidade irá renderizar a maioria dos dados que contém permanentemente irrecuperável. No entanto, com outros tipos de unidades, tais como memórias flash, muitos dados ainda podem ser recuperáveis por remanência de dados.

As unidades de disco rígido modernas contêm um comando de apagar seguro projetado para apagar de forma permanente e segura Cada porção acessível e inacessível de uma unidade., Ele também pode funcionar para algumas unidades de Estado Sólido (flash drives). A partir de 2017, não funciona em Usb flash drives nem em memórias flash digitais seguras. Quando disponível, isto é mais rápido do que usar dd, e mais seguro. Em máquinas Linux é acessível através da opção –security-erase-enhanced do comando hdparm.

o programa shred oferece várias subscrições, bem como a exclusão mais segura de arquivos individuais.

data recoveryEdit

Data recovery involves reading from a drive with some parts potentially inacessible., dd é um bom ajuste com este trabalho com o seu skipping flexível (seek) e outras configurações de baixo nível. O vanilla dd, no entanto, é desajeitado para usar como o usuário tem que ler as mensagens de erro e calcular manualmente as regiões que podem ser lidas. O tamanho de bloco único também limita a granuaridade da recuperação, como um trade-off Tem de ser feito: ou usar um pequeno para mais dados recuperados ou usar um grande para a velocidade.

UM programa C chamado dd_rescue foi escrito em outubro de 1999. Ele eliminou a funcionalidade de conversão do dd, e suporta dois tamanhos de bloco para lidar com o dilema., Se uma leitura usando um tamanho grande falhar, ela cai de volta para o tamanho menor para recolher o máximo de dados possível. Também pode correr para trás. Em 2003, um script dd_rhelp foi escrito para automatizar o processo de Uso do dd_rescue, mantendo o controle de quais áreas foram lidas por conta própria.

em 2004, o GNU escreveu um utilitário separado, independente do ddrescue. Ele tem um algoritmo dinâmico de tamanho de bloco mais sofisticado e mantém o controle do que foi lido internamente. Os autores da dd_rescue e da dd_rhelp consideram-na superior à sua implementação., Para ajudar a distinguir o programa GNU mais recente do script mais antigo, nomes alternativos são algumas vezes usados para ddrescue do GNU, incluindo addrescue (o nome em freecode.com e freshmeat.net), gddrescue (nome do pacote Debian) e gnu_drescue (nome do pacote openSUSE).

outro programa de código aberto chamado savehd7 usa um algoritmo sofisticado, mas também requer a instalação de seu próprio interpretador de linguagem de programação.,ential (e, geralmente, single-threaded) sistema de desempenho de leitura e gravação para blocos de 1024 bytes:

a Geração de um arquivo com o aleatório dataEdit

Para criar um arquivo de 100 bytes aleatórios usando o kernel motorista aleatório:

dd if=/dev/urandom of=myrandom bs=100 count=1

a Conversão de um arquivo para superior caseEdit

Para converter um arquivo para maiúsculas:

dd if=nome do arquivo de=arquivo1 conv=ucase,notrunc

o Progresso indicatorEdit

Sendo um programa projetado principalmente como um filtro, dd, normalmente, não fornece qualquer indicação de progresso., Isto pode ser superado enviando um sinal USR1 para o processo GNU dd em execução, resultando em DD imprimindo o número atual de blocos transferidos.

O seguinte de um forro de resultados na saída contínua de progresso a cada 10 segundos até que a transferência é concluída, quando o dd-pid é substituído pelo processo de identificação de dd:

enquanto matá -USR1 dd-pid ; fazer sleep 10;

as versões mais Recentes do GNU dd apoiar o status=progresso opção, que permite periódicas impressão de estatísticas de transferência para o stderr.

Leave A Comment