Recuperando informações de particionamento de dispositivos de bloco

1

Recentemente, anotei ~ 100MB desde o início do meu disco rígido externo de 1TB usando o comando dd. Isso significa que minhas tabelas de partição provavelmente foram perdidas. fdisk -l não mostra nenhuma informação de partição.

No entanto, como na verdade eu tive minha unidade montada durante a emissão do comando dd, os dados na unidade (todas as partições) podem ser acessados com o explorador de arquivos. O disco rígido externo ainda está conectado ao computador. Isso me leva a acreditar que a tabela de partições pode ser recuperada.

As pesquisas sobre esse tópico recomendam ferramentas de recuperação de dados que podem restaurar a tabela de partições, mas essas opções pressupõem que a unidade foi desconectada do computador.

Observar / proc / partitions fornece o tamanho de cada dispositivo de bloco, mas não seus deslocamentos em setores.

Eu assumo que desde que eu possa ver a estrutura do arquivo no nautilus, os deslocamentos da partição devem ser conhecidos. Existe uma maneira de expor esta informação?

    
por bananasplits 07.01.2017 / 23:14

1 resposta

2

Você pode obter informações de partição de /sys , precisamente de /sys/block/<disk>/<partition>/{start,size} .

Esta função shell pode ajudá-lo ::

print_partitions()
{
    local disk="$1"
    local part
    local template="%-6s %16s %16s %16s\n"

    printf "$template" Part. "First sector" "Last sector" "# sectors"
    for part in "/sys/block/$disk/"sd*; do
        st="$(cat "$part/start")"
        sz="$(cat "$part/size")"
        end=$((st + sz - 1))
        printf "$template" "${part##*/}" "$st" "$end" "$sz"
    done
}

Uso:

$ print_partitions sdd
Part.      First sector      Last sector        # sectors
sdd1               2048          2099199          2097152
sdd3            2099200       3907029167       3904929968

Nota: os setores aqui são setores de 512 bytes.

Para um despejo completo das suas partições:

for disk in /sys/block/sd*; do
    print_partitions "${disk##*/}"
    echo
done

Note que você também pode ter substituído informações preciosas no início da primeira partição, como um superbloco ext, mas essa é outra história .

    
por 08.01.2017 / 02:07