Como * rapidamente * obter uma lista de arquivos com setores / blocos / clusters ruins / o que for?


7

A caixa do Windows 7 (64 bits) da minha esposa desenvolveu subitamente um status SMART "disk is bad". Estou tentando copiar tudo (sem advertências sobre a falta de um regime de backup, por favor, eu já sei :( ) criando uma Imagem do sistema através da rede para uma máquina diferente, mas chega a um certo ponto e começa a demorar para sempre. Fazer um chkdskrevela que certos arquivos causam isso tendo muitos blocos defeituosos (como dezenas de milhares em uma fileira, se o log de eventos é alguma indicação) e fazendo com que o sistema faça sua tentativa padrão de recuperar e realocar após coisa de acesso.

Mas isso está demorando tanto que eu tenho medo de que o disco falhe completamente antes que eu possa copiar a maldita coisa. No entanto, vários dos arquivos até agora foram os que ela tem cópias de outros lugares, então eu posso excluí-los antes de tentar novamente o backup para acelerar consideravelmente as coisas.

Então: existe alguma ferramenta ou procedimento que tentará ler cada arquivo e, ao atingir um bloco defeituoso, me fale sobre ele e pule para o próximo arquivo? Para que eu possa ver quais eu posso despejar e quais eu preciso deixar tentar recuperar?


1
"existe alguma ferramenta ou procedimento que tentará ler cada arquivo e, ao atingir um bloco defeituoso, me fale sobre ele e pule para o próximo arquivo?" Este é exatamente o que ddrescue faz gnu.org/software/ddrescue você pode executá-lo a partir de um linux stick USB ao vivo como cd de recuperação do sistema. ele vai pular setores defeituosos e ler tudo o que pode em primeiro lugar, em seguida, voltar e repetir os setores defeituosos repetidamente
endolith

Respostas:


4

Como ninguém realmente respondeu à sua pergunta, o seguinte método não exatamente rápido como um raio pode ser a maneira mais rápida de obter o que você está procurando.

  1. Os utilitários que você precisará trabalhar no Linux, portanto, primeiro é necessário criar uma chave USB ou CD que possa ser usado para inicializar no Linux (ou para conectar o disco a uma máquina Linux).

  2. Você precisa executar o ddrescue a partir do pacote Gnu ddrescue. Isso criará um "mapfile", que é basicamente uma lista dos setores defeituosos no seu disco. Existem muitas opções diferentes para o ddrescue, que, entre outras coisas, variam na dificuldade em ler / recuperar dados de um setor defeituoso. Se você deseja considerar qualquer setor que apresenta problemas como "ruins" e não deseja realmente recuperar nada com o ddrescue, use a opção "-n" e especifique / dev / null como o destino, e isso será bem rápido (o ddrescue lerá apenas uma vez todos os setores do disco em ordem e a saída do mapfile conterá uma lista de setores nos quais a leitura falhou).

  3. Você precisa executar um utilitário chamado ddru_ntfsfindbad no arquivo de mapa e no disco, e isso produzirá o que você deseja: uma lista dos arquivos no disco que possuem partes em um dos setores defeituosos.

NOTA, no entanto: 1. Se uma unidade estiver falhando, é muito provável que a leitura da unidade a torne pior. Portanto, é bem possível (alguns diriam "quase certo") que alguns / muitos / muitos setores que eram bons antes de você ler o disco duas vezes por meio do procedimento agora estão ruins. A melhor coisa a fazer seria ter uma boa unidade e executar as duas etapas acima, na verdade recuperando dados. Se você fizer isso, é claro, convém usar a capacidade do ddrescue para tentar extrair os dados de setores difíceis de ler.

  1. O manual do ddru_ntfsfindbad diz que você NÃO PODE executá-lo na unidade defeituosa original, A menos que o sistema de arquivos seja / era NTFS. Portanto, você está bem no seu caso, mas quase certamente será mais rápido se você executá-lo em uma unidade recuperada pelo ddrescue e não no original. E se os setores defeituosos estiverem em determinados metadados do sistema de arquivos, você realmente precisará fazer isso.

Percebo que a pergunta original é muito antiga, mas tive esse problema recentemente e achei que outras pessoas poderiam querer saber a resposta para a pergunta original.


Isso pode ser executado na nova WSL no Windows?
mFeinstein 13/09

3

Quando se trata de setores defeituosos em um disco, se não houver backup, o que faço é obter uma imagem de backup usando uma ferramenta chamada Drive Snapshot:

  Drive Snapshot
  http://www.drivesnapshot.de/

Quando essa ferramenta encontra setores defeituosos, ela os acompanha em um arquivo de texto separado (um setor defeituoso por linha, para que você possa simplesmente contar o número de linhas no arquivo para determinar o número total de setores defeituosos), que também é usado como uma referência cruzada para descobrir quais arquivos usaram esses setores.


+1, Depois que isso for executado, execute o Spinrite, conforme sugerido por happy_soil, ele poderá reparar setores defeituosos ou recuperar dados e movê-los para bons setores, quando o spinrite terminar, faça outra imagem usando o Drive Snapshot.
Moab

Isso não responde à pergunta: Como obter uma lista de arquivos com setores defeituosos? Uma lista de setores defeituosos não é a mesma que uma lista de nomes de arquivos.
Chloe

1

Eu tive a mesma pergunta e fiz algumas pesquisas: http://www.disktuna.com/finding-out-which-file-is-affected-by-a-bad-sector/ .

Estou assumindo o sistema operacional Windows e NTFS.

Portanto, um setor ruim pode fazer parte de:

  • Espaço não alocado. Nós podemos ignorar isso.

  • Estruturas do sistema de arquivos. Normalmente, o chkdsk deve cuidar disso. É possível que, dependendo de onde o dano no sistema de arquivos esteja, o chkdsk não funcione. Nesse caso, você executaria uma verificação de superfície no próprio disco rígido.

  • Arquivos de sistema afetados: você pode usar o Verificador de arquivo de sistema do Windows (SFC.exe). No prompt de comando, digite o seguinte comando e pressione ENTER: sfc / scannow.

  • Dados do usuário: A ferramenta de suporte da Microsoft NFI.exe pode ser usada para converter um endereço do setor LBA em um caminho de arquivo. Dessa forma, você pode determinar quais arquivos precisam ser restaurados do backup após a realocação do setor.

    Exemplo:

    C:\Users\admin\Downloads>nfi \Device\Harddisk0\DR0 28521816
    NTFS File Sector Information Utility.
    Copyright (C) Microsoft Corporation 1999. All rights reserved.
    
    
    ***Physical sector 28521816 (0x1b33558) is in file number 5766 on drive C.
    \IMAGES\win7HDD.vhd
    
  • A maneira mais fácil é provavelmente o HD Sentinel . Depois de executar uma verificação de superfície, o HD Sentinel exibirá uma lista de arquivos afetados por setores defeituosos.


Cite as partes essenciais da resposta nos links de referência, pois a resposta pode se tornar inválida se as páginas vinculadas forem alteradas.
DavidPostill

Ok, vai fazer. Standby;)
Joep van Steen

Grande desvantagem do HD Sentinel para esse recurso específico: ele realmente tentará acessar os setores defeituosos e exibir seu conteúdo quando solicitado para exibir a quais arquivos eles pertencem. O Desfragmentador do Piriform é excelente para esse propósito, em combinação com os valores LBA de setores defeituosos fornecidos pelo HD Sentinel durante sua verificação: aponte um bloco no mapa e liste quais arquivos estão nessa área. Mas o primeiro passo deve ser a clonagem / criação de imagens e, como Scott Petrack mencionou, é possível obter uma lista de arquivos afetados por setores defeituosos usando ddru_ntfsfindbad em combinação com o ddrescue.
GabrielB

O nfi.exe não possui esse problema, fornece seus resultados analisando a MFT e não tenta acessar os setores solicitados, mas parece haver um problema com valores além de 2 ^ 31 ou 2147483648. superuser.com/questions/1267334 /… A ferramenta nativa multiuso do Windows fsutil não parece ter esse problema, e a saída é mais simplificada, mas é mais lenta (pode ser um problema se houver muitos clusters a serem solicitados). Com nfi, use números de setor, mas com fsutil, use o número do cluster.
GabrielB

1

Se você já possui uma lista de setores defeituosos, a ferramenta mais conveniente que encontrei para determinar quais são os arquivos potencialmente afetados é o Desfragmentador do Piriform. Ao clicar em um determinado bloco no mapa do volume, ele exibirá uma lista dos arquivos contidos no mesmo bloco (mesmo arquivos não fragmentados). E ao clicar no nome de um arquivo na guia "Lista de arquivos" (que exibe apenas arquivos fragmentados), destacará todos os blocos que contêm pelo menos um setor pertencente a esse arquivo. Infelizmente, não há indicação numérica de intervalos de deslocamento / setor / cluster e não há maneira de digitar diretamente um valor específico de deslocamento / setor / cluster. (Escrevi a empresa há cerca de dois anos para solicitar alguns aprimoramentos que tornariam esse ótimo recurso praticamente mais utilizável nesse tipo de situação e tive uma resposta gentil, me agradecendo pelos meus comentários e sugestões; Não atualizo o Defraggler há algum tempo, talvez algumas das minhas sugestões tenham sido implementadas desde então.)

Forneci mais alguns métodos aqui: Como localizo se há arquivos em um setor defeituoso específico?

- nfi.exe X: [número do setor]

- cluster de consulta de volume fsutil X: [número do cluster]

Com as duas ferramentas de linha de comando, deve ser relativamente fácil escrever um script para carregar cada linha de uma lista de setores como entrada e obter uma lista de arquivos como saída.

- HD Sentinel, mas com uma grande ressalva: ele realmente tentará acessar cada setor solicitado e exibir seu conteúdo, o que pode congelar temporariamente o sistema e piorar a condição da unidade.

- R-Studio (mesmo problema que o HD Sentinel)

- WinHex (mesmo problema que o HD Sentinel)


0

Isso dependeria do seu desejo pelos dados, com base no seu desejo de fazer as coisas sem custo.

Recentemente, analisei o novo software de recuperação de dados da CBL e, embora esta unidade ainda esteja tecnicamente em execução, um dos recursos que achei digno de menção foi a capacidade de selecionar o número de tentativas de repetição para setores defeituosos.

Em um caso como esse, você pode configurá-lo para 3 tentativas ao invés do padrão, 20 ou 30, eu acho. Ao ajustar isso para 3, você ainda deve capturar todos os dados em partes fracas da unidade sem perder tempo crucial em arquivos que já podem estar além da recuperação de software. Então, quando você capturar essa rodada, volte e selecione apenas os arquivos que falharam na primeira tentativa e tente novamente algumas vezes, aumentando gradualmente o número de tentativas para 10, 20, 50 até você obter tudo ou a unidade ficar completamente plana.

Como alternativa, após a primeira passagem, você pode tentar o spinrite, conforme sugerido por happy_soil, para verificar se ele pode atualizar os setores defeituosos, mas extrair rapidamente a maior parte dos dados, pois esse nível de falha geralmente é causado por falhas de cabeças, pré-amplificadores ou cache. o circuito do inversor. Se esse for o caso e as falhas não estiverem na mídia, cada segundo de seu tempo conta.

O software da CBL é um pouco mais caro que os concorrentes similares por cerca de US $ 100, mas o único comercial que eu já vi com tanta granularidade nos controles e suporte decente disponível, se você precisar de ajuda para obter as configurações.


0

execute chkdsk / r em um prompt elevado do cmd para localizar clusters ruins e recuperar informações legíveis. Isso pode melhorar a confiabilidade da sua tentativa de backup. Faça backup dos seus arquivos usando cópia simples depois. Se isso falhar, você pode tentar os métodos de recuperação de dados que tentam novamente a leitura; no entanto, se o chkdsk não conseguiu ler o setor defeituoso, você pode repetir o chkdsk / r e tentar novamente. Múltiplos chkdsk / re tentativas de copiar dados é uma boa maneira de repetir tentativas de recuperação incorreta de dados do setor. Se o chkdsk conseguir ler o setor defeituoso uma vez, ele gravará os dados em um bom bloco. O chkdsk / r repetido continuará a melhorar a integridade do arquivo, desde que o bloco inválido possa ser lido apenas uma vez. Se os dados se foram, desista!

Depois de recuperar os dados ou desistir e anotá-los, você poderá restaurar a unidade para o uso normal novamente, mas mantenha os dados importantes em outro local. Pode ser uma boa ideia copiar todos os seus dados da unidade o máximo possível e, em seguida, criar um formato de baixo nível seguido de um particionamento e um formato lento / completo para permitir uma realocação incorreta do setor no sistema do Fabricante e na lista de setores defeituosos NTFS. A formatação rápida não marcará setores defeituosos como ruins.

chkdsk / b limpa a lista de clusters inválidos e redigitaliza / atualiza a lista de clusters inválidos. A taxa de aumento de cluster inválida pode permanecer estável e a lista de cluster inválido do NTFS deve mantê-la sob controle; a unidade pode ser segura para uso novamente. Lembre-se, porém, de que, se todos os clusters sobressalentes alocados pela fábrica de discos rígidos foram mapeados para clusters ruins, a unidade não pode mapear clusters no futuro e pode estar caminhando para uma falha eminente. Porém, lembre-se de que o NTFS monitora clusters ruins independentemente, portanto, esse pode não ser o fim final da unidade.

Convém controlar e monitorar futuros incrementos incorretos do setor executando periodicamente chkdsk / be monitorando taxas de incremento perigosas perigosas usando o software de varredura do setor. Se a unidade mostrar sinais de que é estável, ela poderá continuar funcionando normalmente novamente por um longo tempo.

Se a unidade continuar causando problemas, largue-a de um local muito alto, para evitar que você perca mais seu precioso tempo em um disco rígido obtuso.


Isso não explica como obter os arquivos com setores defeituosos.
Chloe

O CHKDSK NUNCA deve ser usado em um HDD suspeito de ter problemas físicos. Ele só corrige problemas lógicos no que diz respeito ao sistema de arquivos NTFS. Isso pode aumentar ainda mais a quantidade de danos sem recuperar um único byte no processo. Veja a resposta de Scott Petrack para obter o melhor curso de ação nesse tipo de situação. Para avaliar regularmente as condições dos dispositivos de armazenamento nos sistemas Windows, recomendo o HD Sentinel, software comercial, mas valho cada centavo, considerando que ele pode alertar sobre um desastre iminente aos primeiros sinais de problemas e, assim, evitá-lo.
GabrielB

-1

Embora o SpinRite não faça exatamente o que você deseja, ele tentará corrigir e recuperar dados localizados em setores defeituosos.

Como de costume, sua milhagem pode variar, mas com base em vários depoimentos de usuários , ela funciona conforme anunciado. Eu o uso pessoalmente para manter meus discos.

Consulte a documentação para obter mais detalhes.


NÃO USE SPINRITE EM UM HDD COM FALHA. Sua capacidade de "atualizar" e muito menos "consertar" é duvidosa, na melhor das hipóteses, e enquanto estiver em execução, o que é altamente estressante para uma unidade já com defeito, nem um único byte de dados é realmente recuperado. Ele pode ser usado no final, depois que um clone completo tiver sido feito com o ddrescue / HDDSuperClone, para tentar salvar alguns dos setores que foram ignorados (mas não conte com isso, o mais provável é que os force a realocados, portanto, os dados originais serão perdidos de qualquer maneira). Veja a resposta de Scott Petrack para o melhor curso de ação em tal situação.
GabrielB
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.