Analisa o disco inteiro em ordem, bloco a bloco, e também obtém os nomes dos arquivos

1

Estou tentando criar um utilitário de partição, mas não tenho certeza de como começar.

O objetivo final é ter uma imagem da unidade como o defragger antigo do disco do Windows, para que você possa ver os dados, o que está vazio, etc., mas também ser capaz de inspecionar um local específico na imagem e descobrir qual arquivo ( ou que parte de um arquivo) está escrito lá.

Provavelmente, há alguns utilitários de linha de comando que são úteis, por exemplo, %código%. No entanto, não sei como recuperar o nome do arquivo em um determinado local ...

    
por Scott 24.08.2017 / 14:51

1 resposta

1

Você pode usar debugfs para visualizar e modificar os sistemas de arquivos ext2 / ext3 / ext4 em um nível muito baixo.

Ele possui um shell interativo no qual você pode executar seus comandos manualmente (inicie-o usando sudo debugfs /dev/sdXY , em que /dev/sdXY é o dispositivo em que sua partição está salva), mas também permite executar comandos únicos especificando -los com o parâmetro -R .

Por exemplo, para listar os blocos alocados para o arquivo /bin/ls na partição /dev/sda2 , tente isto:

$ sudo debugfs -R 'blocks /bin/ls' /dev/sda2
debugfs 1.43.4 (31-Jan-2017)
2922912 2922913 2922914 2922915 2922916 2922917 2922918 2922919 2922920 2922921 2922922 2922923 2922924 2922925 2922926 2922927 2922928 2922929 2922930 2922931 2922932 2922933 2922934 2922935 2922936 2922937 2922938 2922939 2922940 2922941 2922942 2922943 

Mais informações sobre essa poderosa ferramenta podem ser encontradas na manpage digitando man debugfs . Você também pode digitar help dentro de seu shell interativo para obter uma lista de comandos disponíveis.

Nota: Não tenho certeza se essa ferramenta tem um bom desempenho para ser usada para examinar uma partição inteira de uma só vez. Se você tentar isso, provavelmente não deve iniciar uma nova instância de debugfs por arquivo para examinar, mas criar um script de comando para ser executado e usá-lo com o parâmetro -f .

O inverso para especificar o número do bloco e descobrir a qual arquivo ele pertence também é possível, mas mais complicado e também pode levar alguns segundos por etapa. Aqui está uma transcrição de uma sessão debugfs interativa mostrando isso:

$ sudo debugfs /dev/sda2
debugfs 1.43.4 (31-Jan-2017)
debugfs:  blocks /bin/ls
2922912 2922913 2922914 2922915 2922916 2922917 2922918 2922919 2922920 2922921 2922922 2922923 2922924 2922925 2922926 2922927 2922928 2922929 2922930 2922931 2922932 2922933 2922934 2922935 2922936 2922937 2922938 2922939 2922940 2922941 2922942 2922943 
debugfs:  icheck 2922912
Block   Inode number
2922912 914862
debugfs:  ncheck 914862
Inode   Pathname
914862  /bin/ls
    
por Byte Commander 24.08.2017 / 15:14