Copiando a saída do console do dd para o arquivo, bem como para o console

0

Estou tentando fazer a imagem de um disco rígido usando o dd que está causando erros de E / S. Como resultado, adicionei o parâmetro 'noerror', mas gostaria de acompanhar os erros para tentar recuperar.

Minha tentativa atual é a seguinte:

sudo dd if=/dev/sdb bs=1M conv=sync,noerror of=output.img 2>&1 | tee output.log

Com isso, ambos output.img e output.log são criados, mas ambos têm um tamanho de 0 bytes e, ao finalizar o dd, não há saída no eco para o terminal.

Eu prefiro tentar o dd com a opção 'noerror' antes de ferramentas como o ddrescue, porque eu estou mais familiarizado com o dd.

Além disso, esta unidade contém uma única partição NTFS, portanto, os indicadores sobre como recuperar uma partição NTFS com bits ausentes seriam bem-vindos (a unidade tem 500 GB e o primeiro erro que encontramos foi de aproximadamente 30 GB).

Obrigado!

    
por Ansel Pol 07.04.2018 / 18:43

1 resposta

1

Recomendamos enfaticamente que você use apenas ddrescue - não evite usar uma ferramenta adequada para o trabalho, a execução não é difícil, e você vai poupar algum stress.

A invocação é simples:

Primeira execução:

  • -p - pré-alocar espaço
  • -b 4M - use tamanho de setor grande para velocidade
ddrescue -p -b 4M ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}

Execuções subseqüentes: (ao contrário de dd , você pode executá-lo várias vezes e continuará de onde parou, referindo-se ao arquivo de log)

  • -b 512 - use um tamanho de setor menor para tentar preencher as lacunas
  • -r 10 - usar várias passagens de nova tentativa
ddrescue -b 512 -r 10 ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}

Seções com erros de leitura terão (por padrão) zeros, e você terá um arquivo de log similar ao seguinte:

#      pos        size  status
0x00000000  0x00014E00  +
0x00014E00  0x00000200  -
0x00015000  0x00005800  +
0x0001A800  0x00000200  -
0x0001AA00  0x00028000  +
0x00042A00  0x00000200  -
0x00042C00  0x00125400  +

As linhas marcadas com + são regiões sem erros, as linhas marcadas com - são regiões com erros.

Você pode precisar examinar algumas das seguintes opções, dependendo da natureza de seus erros de leitura:

   -d, --direct
          use direct disc access for input file

   -K, --skip-size=<min>[,<max>]
          initial size to skip on read error [64 KiB]

   -M, --retrim
          mark all failed blocks as non-trimmed

   -O, --reopen-on-error
          reopen input file after every read error

   -r, --retry-passes=<n>
          exit after <n> retry passes (-1=infinity) [0]

   -R, --reverse
          reverse the direction of all passes

Em resposta direta à sua pergunta:

  1. Você provavelmente está enfrentando um problema de buffering ... provavelmente verá várias linhas aparecerem de uma vez e, depois, nada novamente - veja unbuffer
  2. sudo pode estar pedindo uma senha, mas você redirecionou o prompt ... então nada está acontecendo.
por 07.04.2018 / 18:57

Tags