É possível procurar por um arquivo usando a soma de verificação em vez do nome? [duplicado]

1

Suponha que eu queira fazer uma pesquisa para descobrir se eu tenho um arquivo que corresponde ao sha256 gerado a partir do arquivo test1.txt usando o comando:

sha256sum -b test1.txt

Eu recebo como saída:

e3d748fdf10adca15c96d77a38aa0447fa87af9c297cb0b75e314cc313367daf * test1.txt

Por isso, quero encontrar os arquivos que correspondem à soma de verificação gerada em vez de usar o nome.

Isso é possível?

    
por MarianoM 09.11.2018 / 07:53

3 respostas

2
find . -type f -exec sha256sum -b {} + | 
grep -F 'e3d748fdf10adca15c96d77a38aa0447fa87af9c297cb0b75e314cc313367daf'

Isso calcularia a soma de verificação SHA256 para cada arquivo no diretório atual ou abaixo dele. O grep no final extrairia os resultados dos cálculos que correspondem à soma de verificação que você está procurando.

Se o resultado da operação find fosse desviado para um arquivo, ele poderia servir como um "banco de dados" que você poderia usar para fazer várias pesquisas com grep . Se alguma lógica extra fosse adicionada, você poderia fazer uma tarefa do cron que periodicamente atualizasse esse arquivo com informações de arquivos novos e atualizados e removesse informações antigas (não era realmente sobre isso, então estou deixando qualquer código para o momento). Com pouco esforço extra, você pode até fazer isso com um simples banco de dados SQLite.

Relacionado com a sintaxe do comando find :

por 09.11.2018 / 08:47
1

Normalmente você não terá um banco de dados contendo a soma sha256 de cada arquivo, então a única maneira seria calcular a soma sha256 de cada arquivo (parando se você encontrar uma correspondência). Essa é uma operação muito pesada e demorada, então, na prática, a resposta na maioria dos casos é não.

    
por 09.11.2018 / 08:05
1

Sim, isso é possível, mas apenas de uma maneira bruta, verificando todos os arquivos do sistema e comparando-os com a sua assinatura.

(Isso nos permite, de fato, como os duplicadores de arquivos funcionam, verificando todos os arquivos e procurando correspondências, que são strongs candidatos para arquivos com conteúdo idêntico.)

Se você estiver considerando pesquisar os arquivos com frequência, talvez queira criar um checksums de mapeamento de índice para os caminhos, o que pode evitar a necessidade de recalcular esses checksums com frequência. Se você implementar esse índice de maneira inteligente, poderá fazer atualizações incrementais, tendo apenas que verificar novos arquivos ou arquivos que foram atualizados desde a verificação anterior.

    
por 09.11.2018 / 08:08