Pergunta

Eu estava trabalhando com qualidade ontem fazendo alguns testes formais.Em seu procedimento, eles verificaram que todos os arquivos da máquina de teste foram retirados do lançamento.A maneira como eles verificaram se esses arquivos eram iguais foi verificando o tamanho e as janelas de carimbo de data/hora colocadas neles no Windows Explorer.Acontece que eles estavam desativados por outro motivo que consegui descobrir.

Esta é uma maneira válida de verificar se um arquivo é o mesmo?Achei que não e comecei a discutir, mas sou mais jovem aqui, então pensei que não deveria ir longe demais.Eu queria argumentar que eles deveriam fazer uma comparação binária no arquivo para verificar se seu conteúdo é exato.Na minha experiência, os carimbos de data/hora e os atributos de tamanho nem sempre funcionam conforme o esperado.Alguma ideia???

Foi útil?

Solução

A única maneira 100% de descobrir se dois arquivos são iguais é fazer uma comparação binária dos dois.

Se você consegue conviver com o risco de falsos positivos (ou seja,dois arquivos que não são 100% idênticos, mas seu código diz que são), então os algoritmos de resumo e soma de verificação podem ser usados ​​para diminuir o trabalho, especialmente se os arquivos estiverem em duas máquinas diferentes com largura de banda inferior à ideal, para que uma comparação binária é inviável.

Todos os algoritmos de resumo e soma de verificação têm chances de falsos positivos, mas a chance exata varia de acordo com o algoritmo.A regra geral é que quanto mais criptografada ela for e quanto mais bits ela gerar, menor será a chance de um falso positivo.

Até mesmo o algoritmo CRC-32 é bastante bom de usar e deve ser fácil encontrar exemplos de código na Internet que o implementem.

Se você fizer apenas uma comparação de tamanho/carimbo de data e hora, lamento dizer que isso é fácil de contornar e não lhe dará muita certeza de que os arquivos são iguais ou diferentes.

Depende, porém, se você sabe que em seu mundo os carimbos de data e hora são mantidos e alterados apenas quando o arquivo é modificado, então você pode usá-lo, caso contrário, não há garantia.

Outras dicas

Hashing é muito bom.Mas a outra alternativa tecnológica um pouco inferior é executar uma ferramenta de comparação como WinMerge ou TextWrangler e comparar as duas versões de cada arquivo.Chato e há espaço para erro humano.

O melhor de tudo é que use o controle de versão para garantir que os arquivos que você está testando sejam os que você editou e os que você irá iniciar.Temos pastas de checkout de nosso repositório como sites de teste e de produção, então, depois de confirmar as alterações de sua cópia de trabalho, você pode ter 100% de certeza de que os arquivos que você testa, envia para teste e depois ativa são os mesmos, porque basta executar "svn update" em cada caixa e verificar o número da revisão.

Ah, e se você precisar reverter rapidamente (isso acontece com todos nós em algum momento), basta executar svn update novamente com a opção -r e voltar para uma revisão anterior praticamente instantaneamente.

Eu faria algo como um hash md5sum nos arquivos e compararia isso com os hashes conhecidos do lançamento.Eles serão mais precisos do que apenas comparações de data/hora e deverão poder ser mais automatizados.

A maneira normal é calcular um cerquilha dos dois arquivos e compare isso.MD5 e SHA1 são algoritmos hash típicos.md5sum deve ser instalado por padrão na maioria das máquinas do tipo Unix e na Wikipedia md5sum O artigo contém links para algumas implementações do Windows.

Você deve fazer uma verificação CRC em cada arquivo ...do wiki:

Verificação de redundância Cíclica, um tipo de função hash usada para produzir uma soma de verificação, a fim de detectar erros de transmissão ou armazenamento.

Produz um valor quase único com base no conteúdo do arquivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top