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

9

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


EDIT @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 esses 8 GB ... e nenhuma tabela de partição.

Eu 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!

EDIT @Col: resultados do testdisk

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 que eu bati [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 nova partição nova?

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


EDIÇÃO Descobri que pelo menos alguns dos meus dados ainda estão na unidade flash, usando o abaixo e pesquisando texto em inglês em menos (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" é a unidade inteira. Como o unix trata esses dispositivos como arquivos, você pode usar todos os comandos comuns de arquivos unix, como cat, e depois processá-los como qualquer outro fluxo de dados. O trtexto acima remove caracteres não imprimíveis ("\ 40" é o espaço que eu queria preservar). Em menos, você pode usar "/" para pesquisar, semelhante ao Vim.

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

13ren
fonte
@ ChrisF Essa resposta não funciona ... e eu não posso responder a ela lá - então eu tenho aqui (veja a edição da pergunta).
13ren
@ 13ren - Se você usar o mesmo OpenID nos dois sites, poderá associar suas contas. No entanto, por enquanto, envie um e-mail para [email protected] e peça para eles fazerem a associação. Enquanto isso, mesclamos as duas perguntas.
BinaryMisfit 31/08/2009
1
@ 13ren - eu sei que você não pode responder lá. Eu estava incluindo o link dos moderadores para que eles pudessem encontrar a pergunta.
ChrisF
Obrigado ChrisF, desculpe, eu não entendi. Enviei um email como você sugeriu. @Diago obrigado pela fusão, posso comentar agora. Vou enviá-los novamente.
13ren
1
Insira a unidade e faça um sudo fdisk -l. Você pode atualizar a postagem com a saída?
Sathyajith Bhat

Respostas:

6

Pode valer a pena executar o testdisk no dispositivo, parece que sua tabela de partições pode ter sido exibida. O Testdisk deve poder recuperar seus dados.

Col
fonte
@ Obrigado Col, mas eu não tenho testdisk - eu tentei sudo testdiske man testdisk. Eu apenas o apt-get instalei, e ele detecta / dev / sdc com 8GB (como adicionado à pergunta). Não quero prosseguir até entender um pouco mais.
13ren 01/09/2009
@Col, eu fiz, e acrescentou os resultados para a pergunta
13ren
Se você está se sentindo nervoso, pode valer a pena usar o dd para criar uma imagem do pendrive no seu disco rígido, acho que isso deve funcionar mesmo com um drive desmontável, pois ele copia pouco a pouco.
Col
Obrigado, é uma boa ideia! Mas como copio um arquivo com dd? A página de manual fala sobre "arquivos" ... oh, / dev / sdc conta como um "arquivo"? Então, eu posso simplesmente copiar todo o / dev / sdc para um arquivo convenção como" dd /dev/sdc mybackupfile?
13ren
1
Agora eu tenho alguns pontos de reputação agora, para que eu possa votar em você!
13ren 03/09/09
1

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

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

mount /dev/sdb1 /media/Patriot\ Memory

Onde eu acho que sdb1se refere ao seu stick USB - pode ser sdc1ousdd1


fonte
Ou mesmo sda1, dependendo da idade do computador (ou seja, se os discos rígidos em que são queridos IDE)
Matthew Scharley
@Michiel obrigado - mas diz "mount: nenhum meio encontrado". Usar sdc1 e sdd1 deu "mount: o dispositivo especial / dev / sdc1 não existe", o que me faz pensar que "sdb1" existe, mas há algo errado. Ele tem trabalhado por meses, e nada mudou, que eu saiba - então eu temo que é algum tipo de falha de hardware
13ren
1

Embora seja possível reconstruir a tabela de partições, a primeira coisa que você deve fazer é tirar uma imagem do dispositivo. Você pode fazer isso dd if=/dev/sdb of=~/memstick.imgalterando os caminhos conforme necessário.

Depois de fazer isso, execute o PhotoRec , que poderá retirar os arquivos que estão lá. Se você tiver tudo o que precisa, formate o stick e comece novamente, caso contrário, tente outra recuperação de dados.

Dentrasi
fonte
1

O ddrescue é a ferramenta que você precisa. Eu não acho que você poderá salvar a tabela de partições e acessar os dados de qualquer outra maneira, com base na saída que você postou do testdisk etc.

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

O 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 recuperar 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, interromper o programa, ler o log, executá-lo no modo reverso, etc.

Se você usar o recurso de arquivo de log do ddrescue, os dados serão resgatados com muita eficiência (apenas os blocos necessários serão lidos). Além disso, você pode interromper o resgate a qualquer momento e retomar mais tarde no mesmo ponto.

O 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ê o executa no mesmo arquivo de saída, ele tenta preencher as lacunas sem eliminar os dados já resgatados.

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

Sam Dunlap
fonte