Como fazer o eco da saída de múltiplos comandos para o md5sum?

3

Ok, então eu tenho um arquivo um pouco grande (~ 200 meg) que eu preciso regularmente hash para ver se ele mudou.

O problema é que existem dois pequenos campos neste arquivo que devem ser ignorados, pois podem ser alterados. Cada um desses campos tem um deslocamento e tamanho conhecidos e fixos.

Eu tenho este trabalho usando três comandos cmp, no entanto, porque isso precisa ser feito regularmente eu gostaria de fazê-lo da maneira mais eficiente possível. Também é problemático ter que armazenar uma cópia de backup do arquivo, e seria muito melhor apenas armazenar um hash para comparar.

Até agora, o mais próximo que eu tenho é algo assim:

dd lido do início do arquivo até o deslocamento do primeiro campo | md5sum

dd ler do final do primeiro campo até o início do segundo campo | md5sum

dd lido do final do segundo campo ao final do arquivo | md5sum

Existe alguma maneira que eu possa redirecionar a saída de todos os três desses comandos dd em uma instância md5sum para que eu possa obter um único hash? Eu prefiro não ter os três comandos dd gravar em um arquivo temporário e, em seguida, hash que, como seria muita E / S. Eu gostaria de fazer isso da maneira mais eficiente possível.

Qualquer sugestão seria muito apreciada !!

    
por tunafish 01.04.2013 / 11:26

2 respostas

3

Se você realmente quiser usar hash nos dados, use um subshell:

( dd_1 ; dd_2 ; dd_3 ) | md5sum

Caso contrário, sugiro usar a resposta do Hojat - altere tudo e faça algo com esses "subcasos".

    
por 01.04.2013 / 14:48
2

Você pode cat as três md5's para um arquivo e depois fazer outro md5 naquele arquivo, qualquer alteração em um desses hashes resulta em incompatibilidade no hash final do arquivo de texto.

concatene md5 (1) E md5 (2) E md5 (3) para o arquivo final - > md5 (final_file)

    
por 01.04.2013 / 11:59

Tags