Deixe-me explicar o que estou pensando para que vocês possam me dizer se eu cometer algo errado.
Eu tenho dois discos rígidos externos, um dos quais está falhando (o Windows me diz para formatá-lo para usá-lo novamente), o segundo está vazio e muito maior, então usei-o para copiar o que falhou. No começo pensei em usar Testdisk
porque tenho alguma experiência com isso. No entanto, antes de tentar qualquer ferramenta de reparo, eu queria ter uma cópia completa do disco com falha. Foi onde eu encontrei GNU ddrescue
. Então meu plano é fazer uma cópia GNU ddrescue
e depois usar Testdisk
na cópia.
Então fiz uma cópia completa com o arquivo GNU ddrescue - GUI version
. Após a conclusão da recuperação, três opções apareceram para eu escolher: 1.Redefinir 2.Montar unidade 3.Sair; Eu sou um novato no que diz respeito a isso GNU ddrescue
e imaginei que seria melhor simplesmente sair do programa sem redefinir ou montar nada (não tenho ideia do que a montagem realmente faz em uma unidade, desculpe).
Em seguida, pretendo usar Testdisk
na duplicata para recuperar a partição perdida.
Mas antes de prosseguir, gostaria de saber se estou realmente certo em usar esses dois programas juntos ou se cometi alguma falha no processo. Estou certo em pensar que a nova unidade agora é uma duplicata completa da antiga?
Editar:
/dev/sdd/ ... disco rígido antigo com falha
/dev/sde/ ... novo disco rígido
root@PartedMagic:~# sudo gdisk -l /dev/sdd
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Disk /dev/sdd: 976773168 sectors, 465.8 GiB
Model: Portable
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): A6D24F7F-47D5-4FAA-8595-5E56582C1DB1
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 8-sector boundaries
Total free space is 5099 sectors (2.5 MiB)
Number Start (sector) End (sector) Size Code Name
1 63 976768064 465.8 GiB 0700 Microsoft basic data
root@PartedMagic:~# sudo gdisk -l /dev/sde
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Warning! Secondary partition table overlaps the last partition by
244209734 blocks!
You will need to delete this partition or resize it in another utility.
Disk /dev/sde: 732558336 sectors, 2.7 TiB
Model: Elements 10B8
Sector size (logical/physical): 4096/4096 bytes
Disk identifier (GUID): E797BEEA-722B-4903-8086-B2A84B5E741C
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 5
First usable sector is 6, last usable sector is 732558330
Partitions will be aligned on 8-sector boundaries
Total free space is 57 sectors (228.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 63 976768064 3.6 TiB 0700 Microsoft basic data
Saída desudo blkid
root@PartedMagic:~# sudo blkid
/dev/sdd1: LABEL="Expansion Drive" UUID="3C148148148105DC" TYPE="ntfs" PARTUUID="3df9d654-01"
sudo blkid
não menciona /dev/sdeX/
Para esclarecimento: /dev/sdd/ tinha apenas uma partição antes de falhar
Responder1
Isso não vai funcionar tão facilmente.
O tamanho do setor lógico no novo disco é 4096
, enquanto o disco antigo usa 512
. Os números na tabela de partições permaneceram os mesmos, mas como os novos setores são 8 vezes maiores, toda a tabela de partições no clone não faz sentido.
Em alguns casos é possível traduzir estes números (compareessa minha resposta), mas aqui a partição (antiga) começa no deslocamento de 63*512 bytes que não é divisível por 4096. Isso significa que seu sistema de arquivos agora começa em algum lugardentroum setor maior (embora deva começar no início de um setor), portanto nenhuma tabela de partição fará isso funcionar imediatamente.
O que fazer agora? Algumas ideias abaixo. Desconecte o disco antigo (por precaução) antes de continuar.
Você ainda pode tentar montar o sistema de arquivos independentemente da tabela de partição (agora inválida):
mount -o ro,offset=$((63*512)) /dev/sde /some/mountpoint
Se o sistema de arquivos estiver íntegro, isso deverá funcionar. No seu caso, o comando pode falhar devido ao sistema de arquivos corrompido. Mas talvez funcione e você consiga extrair todos os seus dados importantes.
Você pode mapear o disco inteiro para um dispositivo de loop que informa o tamanho do setor de 512
:
losetup -f --show /dev/sde # 512 is the default value
Isso deve imprimir um nó como /dev/loop7
. No contexto deste dispositivo a tabela de partições é válida. As ferramentas que esperam a tabela de partição agora devem funcionar com o dispositivo (embora algumas possam exigir /dev/loop7p1
, para trabalhar com a partição; kpartx
pode ajudar, mas considere primeiro a próxima ideia).
Nota: você destrói o nó com losetup -d /dev/loop7
.
Você pode mapear a partição real para um dispositivo de loop:
losetup -f --show --offset $((63*512)) --sizelimit $(( (976768064+1-63)*512 )) /dev/sde
Novamente, isso deve imprimir um nó como /dev/loop8
. O sistema de arquivos (possivelmente corrompido) começa bem no início deste dispositivo, portanto, as ferramentas de recuperação que analisam os sistemas de arquivos irão encontrá-lo (ou pelo menos os arquivos dentro dele) sem qualquer tabela de partição.
Você pode copiar a partição para outro deslocamento, para que a tabela de partiçõespodeser consertado. Isso é um tanto complicado; todos os números devem ser calculados corretamente. Se algum dos métodos anteriores foi suficiente para você, não se preocupe.
Observe que o disco antigo tinha 465,8 GiB, o novo tinha 2,7 TiB; então você tem muito espaço. Vamos copiar o sistema de arquivos para o final do disco.
A partição antiga ocupava setores de 512 bytes do setor número 63 até (incluindo) 976768064, 976768002 setores no total. Isso significa que você precisa de pelo menos 122096001 setores maiores (4096 bytes) para isso.
Em setores de 4.096 bytes, o início e o fim são traduzidos para 7 (parcialmente ocupado) e 122096008 (também parcialmente ocupado).
Seu disco contém 732558336 setores, você precisa recuar 122096001 setores (mais, se você planeja usar GPT nele). Um setor inicial de 610459648 parece bom. Isso deixará algum espaço no final para GPT secundário (e está alinhado a um limite de 32 MiB, mas isso não importa muito). Agora, o último setor da nova partição deve ser pelo menos 732555648 (732555655 se você quiser que o tamanho dos setores seja divisível por 8, isso pode deixar algumas ferramentas felizes; uma partição maior que o suficiente não deve afetar o sistema de arquivos, ela sabe que é tamanho próprio).
Edite a tabela de partição, destrua a entrada antiga (inválida) e crie uma nova conforme planejado:
- primeiro setor 610459648
- último setor 732555655
- código ou tipo adequado para NTFS
Um disco tão grande com setores de 512 bytes precisaria de GPT, não de tabela de partição MBR. Com setores de 4.096 bytes, GPT ou MBR devem funcionar.
Então (depois partprobe
, se o programa de particionamento não o chamar implicitamente), você deverá ter acesso à nova partição.
Copie os dados /dev/loop8
(criados acima) para a nova partição:
dd if=/dev/loop8 of=/dev/sdeN bs=32M
# or better use ddrescue again
Após o comando copiar cerca de 465,8 GiB, o sistema de arquivos está devidamente alinhado dentro da partição (ele começa no início, não no meio de um setor). As ideias anteriores eram um tanto "hackeadas"; este oferece uma configuração bastante padrão.
Observe que você pode criar outra partição para dados recuperados, se necessário. O sistema de arquivos que você ddrescue
escreveu originalmente termina no setor 122096008. A nova cópia (se você decidiu criá-la) começa em 610459648. Em qualquer caso, tudo o que estiver entre eles é para você usar.