
Estou tentando criar uma imagem de um disco rígido usando o dd, que está apresentando erros de E/S. Como resultado, adicionei o parâmetro 'noerror', mas gostaria de acompanhar os erros para tentar a recuperação.
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, tanto output.img quanto output.log são criados, mas ambos têm tamanho de 0 bytes e, ao finalizar o dd, nenhuma saída é ecoada para o terminal.
Eu prefiro tentar o dd com a opção 'noerror' antes de ferramentas como o ddrescue porque estou mais familiarizado com o dd.
Além disso, esta unidade contém uma única partição NTFS, portanto, serão apreciadas dicas sobre como recuperar uma partição NTFS com bits ausentes (a unidade tem 500 GB e o primeiro erro que encontrei foi de cerca de 30 GB).
Obrigado!
Responder1
Eu recomendo fortemente que você apenas useddrescue
- não evite uma ferramenta adequada ao trabalho, executá-la não é difícil e você evitará algum estresse.
A invocação é simples:
Primeira corrida:
-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 subsequentes: (ao contrário dd
, você pode executá-lo várias vezes e ele continuará de onde parou, consultando o arquivo de log)
-b 512
- use um tamanho de setor menor para tentar preencher as lacunas-r 10
- use vários passes de repetição
ddrescue -b 512 -r 10 ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}
Seções com erros de leitura (por padrão) conterão zeros e você terminará com um arquivo de log semelhante ao abaixo:
# pos size status
0x00000000 0x00014E00 +
0x00014E00 0x00000200 -
0x00015000 0x00005800 +
0x0001A800 0x00000200 -
0x0001AA00 0x00028000 +
0x00042A00 0x00000200 -
0x00042C00 0x00125400 +
As linhas marcadas +
são regiões sem erros, as linhas marcadas -
são regiões com erros.
Talvez seja necessário examinar algumas das opções a seguir, dependendo da natureza dos 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:
- Você provavelmente está enfrentando um problema de buffer... provavelmente verá muitas linhas aparecendo de uma só vez e nada novamente - veja
unbuffer
sudo
pode estar pedindo uma senha, mas você redirecionou o prompt... então nada está acontecendo.