Como usar md5sum para checksum com um arquivo md5 que não contém o nome do arquivo

2

Eu tenho 2 arquivos test.txt e test.txt.md5. Gostaria de verificar a soma de verificação do test.txt.

A ferramenta gnu md5sum requer um arquivo md5 com o seguinte formato "[md5-hash] [espaço] [espaço] [nome do arquivo]" (md5sum -c test.txt.md5). Infelizmente, meu test.txt.md5 contém apenas o hash md5 (sem os espaços e nome do arquivo).

Como posso passar o hash do arquivo "test.txt.md5" para o comando "md5sum -c"? Eu acho que eu tenho que usar a entrada padrão no entanto todos os exemplos que tenho visto tentar recriar o formato de arquivo md5sum

O conteúdo dos arquivos é:

test.txt :

test

e test.txt.md5 :

d8e8fca2dc0f896fd7cb4cb0031ba249
    
por Kostas 29.04.2015 / 15:18

2 respostas

2

Como muitos comandos, md5sum tem a capacidade de ler a partir da entrada padrão se o valor de uma opção for - (de man md5sum ):

Print or check MD5 (128-bit) checksums. With no FILE, or when FILE is -, read standard input.

Como você sabe o nome do arquivo, basta imprimir o conteúdo do seu arquivo md5, alguns espaços e, em seguida, o nome e passá-lo para md5sum :

$ cat test.txt.md5 
5a6d311c0d8f6d1dd03c1c129061d3b1
$ md5sum -c <(printf "%s  test.txt\n" $(cat test.txt.md5)) 
test.txt: OK

Outra opção seria adicionar o nome do arquivo ao seu arquivo:

$ sed -i  's/$/  test.txt/' test.txt.md5
$ md5sum -c test.txt.md5 
test.txt: OK
    
por 29.04.2015 / 15:41
2

Você pode recalcular a soma de verificação MD5 do seu arquivo e compará-la com aquela armazenada em test.txt.md5 :

cmp test.txt.md5 <(md5sum test.txt | cut -d\  -f1)

Se não houver saída, as somas de verificação serão iguais.

    
por 29.04.2015 / 15:31

Tags