use o gddrescue para clonar o dispositivo em vários arquivos de imagem

1

Eu tento salvar dados da minha unidade externa de 1 TB usando o ddrescue porque eu acidentalmente apaguei tudo dele. Praticamente eu tenho que enfrentar exatamente a mesma situação como postada aqui: Como dividir uma imagem de disco ddrescue e como usá-la novamente? mas nessa pergunta , a primeira parte, que é toda a minha pergunta, < strong> não foi respondida, e durante a leitura dos fóruns, posso encontrar guias apenas para situações diferentes das minhas, ou seja, retomar para o mesmo local, voltar para outra unidade com exatamente a mesma capacidade de armazenamento que a primeira resgatar várias partições para um disco rígido externo com maior capacidade do que todas as que precisam ser resgatadas, etc.

Então, minha pergunta é: eu tenho que resgatar dados do meu disco rígido externo de 1 TB. Para esse efeito, eu tenho um disco rígido externo com cerca de 935 GB (não GiB) de espaço livre sobre ele, além disso, na partição do Windows no meu laptop, que está atualmente vazio, tenho cerca de 222 GB de espaço livre. Eu fiz o seguinte: Eu comecei o ddrescue com

/# ddrescue -n -s900GB /dev/sdc /media/misi/Maxtor/recovery/recovery_part1.img /home/misi/recovery_log.txt

para salvar apenas os primeiros 900 GB na unidade externa. Tudo correu bem, recebi a seguinte saída:

GNU ddrescue 1.17
Press Ctrl-C to interrupt
rescued:   900000 MB,  errsize:       0 B,  current rate:   64104 kB/s
   ipos:   899999 MB,   errors:       0,    average rate:   38981 kB/s
   opos:   899999 MB,    time since last successful read:       0 s
Finished

Depois, continuei salvando o restante na partição do Windows:

/# ddrescue -n /dev/sdc /windows/recovery_part2.img /home/misi/recovery_log.txt

Mas não funcionou:

GNU ddrescue 1.17
Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued:   900000 MB,  errsize:       0 B,  errors:       0
Current status
rescued:   900000 MB,  errsize:       0 B,  current rate:        0 B/s
   ipos:   900000 MB,   errors:       0,    average rate:        0 B/s
   opos:   900000 MB,    time since last successful read:       3 s
Copying non-tried blocks...
ddrescue: write error: Invalid argument

De acordo com a pergunta postada acima e os outros guias e man pages, no entanto, deveria. Consegui continuar salvando o arquivo no outro disco rígido externo e também consegui reiniciar todo o progresso para a partição do Windows. Eu interrompi os dois processos, pois queria testar se eu tenho alguns problemas com, por exemplo, minha partição do windows. Eu também tentei usar outro arquivo de log e especificar manualmente a posição inicial, recuperada do primeiro arquivo de log (ele mudou um pouco desde que eu continuei salvando lá por alguns segundos, como mencionado anteriormente):

/# ddrescue -n -i900862115840 -o900862115840 /dev/sdc /windows/recovery_part2.img /home/misi/recovery_log_2.txt

e recebeu a mesma mensagem de erro Invalid argument mencionada anteriormente. O que estou fazendo errado, e qual é o modo correto para salvar a maior parte dos meus dados para a outra unidade externa, e o resto para minha partição do Windows? Obrigado pelas respostas com antecedência!

    
por Mihály András Pocsai 04.11.2017 / 14:33

1 resposta

0

Acho que ddrescue nunca foi projetado para funcionar dessa maneira. Não há nenhum ponto em analisar o que você fez de errado, porque o caminho certo é de fato em esta resposta para a pergunta que você se refere para. Eu admito que seu uso neste contexto pode não ser óbvio, especialmente para uma pessoa que não está familiarizada com o conceito "tudo é um arquivo" no Unix.

A resposta descreve uma maneira de concatenar dois arquivos a e b em um dispositivo virtual (arquivo especial) /dev/mapper/merge .

Crie dois arquivos a e b ( veja como você pode fazer isso ) em seus dois sistemas de arquivos disponíveis, então a soma de seus tamanhos é igual ou superior ao tamanho de seu /dev/sdc .

Aplique esse fragmento da resposta vinculada (usando seus caminhos adequados para a e b ):

losetup /dev/loop1 a
losetup /dev/loop2 b
s() { blockdev --getsize "$1"; }
dmsetup create merge << EOF
0 $(s /dev/loop1) linear /dev/loop1 0
$(s /dev/loop1) $(s /dev/loop2) linear /dev/loop2 0
EOF

Em seguida, use /dev/mapper/merge em vez de recovery_part1.img em ddrescue invocação.

O conteúdo de /dev/mapper/merge é basicamente o mesmo que o resultado de cat /your/path/to/a /your/different/path/to/b , mas merge é gravável e pesquisável.

Observação: /dev/mapper/merge não sobreviverá a uma reinicialização, mas é claro que seus arquivos a e b serão. Você só precisa recriar /dev/mapper/merge (usando o código acima) se quiser trabalhar com ele após a reinicialização.

    
por 24.01.2018 / 20:23