Usando o crc32 para descobrir se arquivos foram danificados ou danificados

1

Eu tenho um diretório com um conteúdo. Para garantir que nada se perderá com a cópia, eu compactei o diretório e agora tenho um arquivo dir.tar.gz .

A cópia ainda me incomoda e os arquivos estão danificados, então eu gostaria de descobrir se é devido a compactação ou cópia nos arquivos, então eu gerei um crc32 do arquivo compactado.

Não consigo gerar o crc32 do conteúdo original desse diretório, o que significa que não posso usar crc32 nele. É possível?

Além disso, se eu conseguir comparar esses dois números, se eles forem iguais, isso significa que os arquivos não foram danificados?

    
por trolkura 07.07.2016 / 16:31

1 resposta

4

Dependendo de como "estrito" você quer que a soma de verificação seja, uma instalação típica do Linux fornece pelo menos três opções:

  1. sum - esta é uma soma de verificação rápida e simples. Não é criptograficamente seguro e, portanto, adulteração deliberada seria possível, mas ele deveria lidar com erros de cópia de arquivos suficientemente bem.

  2. md5sum (às vezes apenas md5 ). Isso calcula uma soma de verificação baseada em MD5 no arquivo. Isso é mais lento que sum , mas mais resiliente. O algoritmo MD5 foi quebrado, mas não é fácil.

  3. sha1sum Calcula uma soma de verificação SHA1; ainda mais lento, mas o mais strong contra adulterações.

  4. crc32 Isso pode não estar presente em todos os sistemas; é um programa em perl.

No seu caso de uso, provavelmente ficaria com sum .

Ao calcular a soma de verificação no tar.gz antes da transferência e após a transferência, você tem uma garantia razoável de que a transferência foi boa ( sum e crc32 são os mais fracos, mas bons o suficiente).

Existe outra possibilidade ... já que você está compactando os dados, então você pode tentar descompactar o resultado na outra ponta com gzip -dc file.tar.gz > /dev/null . Se isso gerar um erro, o arquivo estará corrompido, caso contrário, é bom. Dependendo do tamanho do arquivo, isso pode ser mais fácil, pois não exige que um segundo arquivo seja transferido. Pode não caber no seu caso de uso.

    
por 07.07.2016 / 16:39