Estou tentando clonar um SSD de 500 GB para um SSD de 1 TB. Por algum motivo, ele continua falhando quando os dados que estão sendo copiados atingem 8 GB. Este é o terceiro SSD de 1 TB que experimentei e todos ficaram presos no mesmo lugar. Eu executei o seguinte comando:
dd if=/dev/sda of=/dev/sdb bs=1024k status=progress
Eu também tentei clonar a unidade usando o Clonezilla, que falha no mesmo local. Eu usei o GParted para reformatar a unidade e configurá-la para um sistema de arquivos EXT4, mas ela ainda fica presa no mesmo local. Sda é interno e sdb é conectado externamente.
O erro que estou recebendo diz:
7977443328 bytes (8.0 GB, 7.4 GB) copied, 208s, 38.4 MB/s
dd: error reading '/dev/sda': Input/output error
7607+1 records in
7607+1 records out
Obrigado a @roaima pela resposta abaixo. Consegui executar ddrescue
e copiou a maioria dos dados. Retirei o SSD interno e conectei os SSDs novos e antigos a uma caixa CentOS via USB3. Eu corri o seguinte:
ddrescue -v /dev/sdb /dev/sdc tmp --force
Durou mais de 15 horas. Parou durante a noite. Mas o bom é que voltou de onde parou quando executei o comando novamente.
Eu usei screen
para não ficar preso em uma única sessão na segunda vez :) . Eu costumava Ctrl+c
sair do comando ddrescue depois que 99,99% dos dados foram resgatados, pois estavam pendurados por horas. Consegui inicializar a partir da nova unidade e inicializou. Aqui está o estado em que eu saí do ddrescue:
Initial status (read from mapfile)
rescued: 243778 MB, tried: 147456 B, bad-sector: 0 B, bad areas: 0
Current status
ipos: 474344 MB, non-trimmed: 1363 kB, current rate: 0 B/s
ipos: 474341 MB, non-trimmed: 0 B, current rate: 0 B/s
opos: 474341 MB, non-scraped: 522752 B, average rate: 8871 kB/s
non-tried: 0 B, bad-sector: 143360 B, error rate: 0 B/s
rescued: 500107 MB, bad areas: 123, run time: 8h 1m 31s
pct rescued: 99.99%, read errors: 354, remaining time: 14h 31m
time since last successful read: 6m 7s
Scraping failed blocks... (forwards)^C
Interrupted by user
Espero que isso ajude os outros. Acho que meu disco antigo estava começando a falhar. Espero que nenhum dado tenha sido perdido. Agora vamos redimensionar a partição LUKS :)
O erro é ,
dd: error reading '/dev/sda': Input/output error
que informa que o problema está lendo o disco de origem e não gravando no destino. Você pode substituir o disco de destino quantas vezes quiser e isso não resolverá o problema de leitura da fonte.Em vez de usar
dd
, considere resgatar os dados do disco antes que ele morra completamente. Copie os arquivos usando algo comorsync
oucp
, ou faça uma cópia da imagem comddrescue
.O último parâmetro aponta para um arquivo temporário relativamente pequeno (o arquivo de mapa) que não está em
/dev/sda
nem/dev/sdb
. Pode estar em um cartão de memória USB externo se você não tiver mais nada.O
ddrescue
comando entende que um disco de origem pode estar com defeito. Ele lê blocos relativamente grandes de cada vez até encontrar um erro e, nesse ponto, marca a seção para inspeção mais detalhada e tentativas de cópia menores. O arquivo de mapa é usado para permitir reinicializações e continuações no caso de seu disco de origem travar e o sistema precisar ser reiniciado. Ele fará o possível para copiar tudo o que puder.Depois de copiar o disco, você
/dev/sdb
parecerá ter partições correspondentes apenas ao tamanho do disco original. Você pode usarfdisk
ougparted
/parted
para corrigir isso depois.Se ocorreu um erro ao copiar os dados, você deve primeiro usar um da
fsck
família para verificar e corrigir as partições. Por exemplo,e2fsck -f /dev/sdb1
.Há um erro na mídia de origem e dd, por padrão, para no primeiro erro. A solução canônica para copiar mídia de origem parcialmente ruim envolve fornecer as opções "conv=noerror,sync". Isso diz para ignorar os bits ruins, substituindo-os por nulos e continue. O tamanho do bloco que você está usando deve corresponder ao do sistema de arquivos neste caso, senão um 'setor' um pouco ruim removerá um bloco dd inteiro. (Você perderá dados adicionais, além do que está ruim na mídia de origem.)
Portanto, embora o dd possa fazer o trabalho e tenha sido usado para fazer exatamente isso por décadas, provavelmente existem outras ferramentas que podem ser mais adequadas.