web-dev-qa-db-pt.com

Tabela de partição corrompida (unidade flash USB)

É um pen drive Patriot de 8 GB, que usei extensivamente com muitos dados. Hoje, ele é detectado, mas todos os dados se foram: ( [~ # ~] editar [~ # ~] em pelo menos alguns dados ainda estão lá, mas a tabela de partição se foi)


[~ # ~] editar [~ # ~] @Sathya (obrigado) aqui está a saída relevante de Sudo fdisk -l:

Disk /dev/sdc: 8019 MB, 8019509248 bytes
247 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 15314 * 512 = 7840768 bytes

Disk /dev/sdc doesn't contain a valid partition table

Parece que é/dev/sdc, com aqueles 8 GB ... e nenhuma tabela de partição.

Tentei montar/dev/sdc (e então dmesg | tail):

/media> Sudo mount /dev/sdc mytmp
mount: wrong fs type, bad option, bad superblock on /dev/sdc,
       missing codepage or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

/media> dmesg | tail
[   24.300000]  sdc: unknown partition table
[   24.320000] sd 2:0:0:0: Attached scsi removable disk sdc
[   24.370000] usb-storage: device scan complete
[   26.870000] EXT2-fs error (device sdc): ext2_check_descriptors: Block bitmap for group 1 not in group (block 0)!
[   26.870000] EXT2-fs: group descriptors corrupted!
[   50.420000] unhashed dentry being revalidated: .DCOPserver_eeepc-brendanma__0
[   50.430000] unhashed dentry being revalidated: .DCOPserver_eeepc-brendanma__0
[   50.430000] unhashed dentry being revalidated: .DCOPserver_eeepc-brendanma__0
[ 5565.470000] EXT2-fs error (device sdc): ext2_check_descriptors: Block bitmap for group 1 not in group (block 0)!
[ 5565.470000] EXT2-fs: group descriptors corrupted!

[~ # ~] editar [~ # ~] @Col: resultados do disco de teste

Disk /dev/sdc - 8013 MB / 7642 MiB - CHS 1022 247 62
Current partition structure:
     Partition                  Start        End    Size in sectors

Partition sector doesn't have the endmark 0xAA55

Depois de bater [proceed], diz:

Structure: Ok.


Keys A: add partition, L: load backup, Enter: to continue

A "Estrutura: Ok." parece reconfortante ... "A: adicionar partição" tornará meus dados antigos acessíveis (se ainda estiverem lá) ou criará uma partição nova?

Outra opção é "[ MBR Code ] Write TestDisk MBR code to first sector "- seria melhor fazer isso?


[~ # ~] editar [~ # ~] Descobri que pelo menos alguns dos meus dados ainda estão na unidade flash, usando o abaixo, e pesquisar texto em inglês em less (como "o"):

cat /dev/sde | tr -cd '\11\12\40\1540-\176' | less

(A unidade mudou de "/ dev/sdb" para "/ dev/sde" porque conectei algumas unidades extras hoje). Aprendi que "/ dev/sde1" seria a primeira partição; e "/ dev/sde" é toda a unidade. Como o unix trata esses dispositivos como arquivos, você pode usar todos os comandos de arquivo unix comuns neles, como cat, e depois processá-los como qualquer outro fluxo de dados. O tr acima remove os caracteres não imprimíveis ("\ 40" é um espaço, que eu queria preservar). Em menos, você pode usar "/" para pesquisar, semelhante ao Vim.

Como posso recuperar meus dados (presumindo que ainda estejam lá)? Se apenas a tabela de partição estiver corrompida, existe uma "ferramenta de recuperação de partição" padrão? Existe uma maneira de "reparticionar" sem excluir tudo?

9
13ren

Pode valer a pena rodar testdisk no dispositivo, parece que sua tabela de partição pode ter estourado. O Testdisk deve ser capaz de recuperar seus dados.

6
Col

Não se preocupe, seus dados não desapareceram --- você está certo sobre o disco não ser montado, independentemente do que a interface gráfica diz.

Você pode montá-lo fazendo (como root) algo como:

mount /dev/sdb1 /media/Patriot\ Memory

Onde eu acho que sdb1 refere-se ao seu pendrive USB - pode ser sdc1 ou sdd1

1
Michiel Buddingh'

Embora seja possível reconstruir a tabela de partição, a primeira coisa que você deve fazer é obter uma imagem do dispositivo. Você pode fazer isso com dd if=/dev/sdb of=~/memstick.img - mudando os caminhos conforme necessário.

Depois de fazer isso, execute PhotoRec , que deve ser capaz de retirar todos os arquivos que estão lá. Se você tiver tudo de que precisa, formate o stick e comece de novo; do contrário, você pode tentar mais recuperação de dados.

1
Dentrasi

ddrescue é a ferramenta de que você precisa. Eu não acho que você será capaz de recuperar a tabela de partição e acessar os dados de outra maneira, com base na saída que você postou de testdisk etc.

http://www.forensicswiki.org/wiki/Ddrescue

ddrescue é uma ferramenta de recuperação de dados. Ele copia dados de um arquivo ou dispositivo de bloco (disco rígido, cdrom, etc) para outro, tentando resgatar os dados em caso de erros de leitura.

A operação básica do ddrescue é totalmente automática. Ou seja, você não precisa esperar por um erro, parar o programa, ler o log, executá-lo em modo reverso, etc.

Se você usar o recurso de logfile de ddrescue, os dados são resgatados de forma muito eficiente (apenas os blocos necessários são lidos). Além disso, você pode interromper o resgate a qualquer momento e retomá-lo mais tarde no mesmo ponto.

Ddrescue não grava zeros na saída quando encontra setores defeituosos na entrada e não trunca o arquivo de saída se não for solicitado. Portanto, toda vez que você executa no mesmo arquivo de saída, ele tenta preencher as lacunas sem limpar os dados já resgatados.

Se você tiver duas ou mais cópias danificadas de um arquivo, cdrom, etc, e executar ddrescue em todos eles, um por vez, com o mesmo arquivo de saída, provavelmente obterá um arquivo completo e sem erros. Isso ocorre porque a probabilidade de haver áreas danificadas nos mesmos lugares em arquivos de entrada diferentes é muito baixa. Usando o arquivo de log, apenas os blocos necessários são lidos da segunda e das cópias sucessivas.

1
Sam Dunlap