Como ter o mesmo hash de uma pasta no windows e no linux?

0

Eu estava usando o 7zip para calcular o hash de uma pasta (com subpastas), o que ele pode fazer com duas opções, com ou sem incluir os nomes dos arquivos.

No entanto, na versão linux do 7zip, o recurso hash não está implementado. Eu tentei diferentes métodos para duplicar o resultado, mas nenhum desses métodos daria o mesmo resultado no linux e no windows.

Exemplos de resultados:

" 7za.exe h -scrcsha1 myfolder " no Windows dá:

SHA1   for data:              D54D3168B16BFEE600C3A77E848A2A1C1DBCBC59
SHA1   for data and names:    BCE55085200581AD1774CC25AE065DE7DE60077D

, enquanto no linux eu tenho:

find . -type f -exec sha1sum "$PWD"/{} \; | sha1sum
ee44137f2462bdfea87ec824dab514f288ae3e6c  -

ou

find . -type f | xargs sha1sum | sha1sum
8f971311a28bcdee36fab0ce87a892564622db40  -

Portanto, não posso usar o resultado de uma plataforma em outra.

(verifiquei que o resultado de um único arquivo é o mesmo para as duas plataformas).

    
por Nygael 05.03.2018 / 16:25

1 resposta

1

A simples execução do seguinte comando não funcionará necessariamente:

find . -type f | xargs sha512sum | sha512sum

O problema que você pode enfrentar é que a ordem dos arquivos relatados por find é diferente de sistema a sistema ou até mesmo de cópia de diretório para cópia.

Em vez disso, tente executar o seguinte:

find . -type f | sort | xargs sha512sum | sha512sum

Sinta-se à vontade para trocar sha512sum por outro, por exemplo: md5sum / sha1sum / sha256sum dependendo de suas necessidades.

Observe que isso pode ficar lento para árvores de diretórios grandes. Nesse caso, você pode preferir um script mais complexo para percorrer a hierarquia.

Exemplo:

$ find . -type f | xargs sha512sum | sha512sum
097e56f6b751c1da15ce5b9dce853ffcc89e06e9cbe10a8dc0894dedb834d40dc4228c65e48bd53f136dd6a7700b0ab07e8e12e7100956db00b0d1b9ef0b9956  -

Isso inclui nomes de arquivos e conteúdo no hash final, mas não inclui metadados - horários de modificação, permissões, etc.

Observe que você pode usar esses utilitários no Windows usando o Windows Subsystem para Linux ". Acabei de instalá-lo, o que foi uma experiência indolor, e que também me fez perceber o problema com a ordem reportada de find .

Tenha também em atenção o modo como os links simbólicos são tratados na sua árvore no Linux vs. Windows.

    
por 05.03.2018 / 16:42

Tags