De fato, o GNU ddrescue é uma boa escolha. Use, por exemplo com 10 tentativas em caso de erros:
ddrescue -r 10 -v /dev/faulty_drive /dev/external_drive optional_logfile.log
Note que usando o comando acima você irá sobrescrever todos os dados em seu disco rígido externo.
Talvez seja mais seguro fazer o backup dos dados em um arquivo de imagem em seu disco rígido externo:
ddrescue -r 10 -v /dev/faulty_drive /path/to/external/drive/image.file
Para isso você pode precisar de um sistema de arquivos em sua unidade externa que suporte tamanhos de arquivo de 2TB ou mais (por exemplo, ext2 e ext3 suportam até 2TB, enquanto que ext4, HFS + ou NTFS suportam tamanhos maiores).
Exemplo onde /dev/sda
é a unidade defeituosa e /dev/sdb3
é a partição externa (ext4) para gravar o arquivo de imagem (execute todos os comandos como raiz):
mount /dev/sdb3 /mnt/external ddrescue -r 10 -v /dev/sda /mnt/external/faulty.img /mnt/external/rescue.log umount /mnt/external
Depois, se você quiser montar partições específicas do seu arquivo de imagem do disco rígido defeituoso faulty.img
, você tem que usar o correspondente monte offsets ou ferramentas como kpartx .
Outro exemplo tirado de infopages do ddrescue para resgatar um disco inteiro /dev/hda
para
/dev/hdb
:
Primeiro, faça backup de todas as áreas sem erros:
ddrescue -n /dev/hda /dev/hdb logfile
Em seguida, tente recuperar setores defeituosos:
ddrescue -dr3 /dev/hda /dev/hdb logfile