Como verificar se dois arquivos copiados são exatamente iguais no Windows?

0

Estou fazendo um backup no meu rv420 da Samsung que executa o Windows 7 Home Starter Edition.

Para fazer isso, quero garantir que, ao fazer uma cópia do meu computador para um dispositivo externo, os arquivos que estão sendo copiados não mudem nem um pouco. Para isso, farei o seguinte: vou pegar um arquivo do meu computador, copiá-lo no dispositivo externo e copiá-lo novamente do dispositivo externo para o computador. Então o arquivo "viajou" pelo dispositivo e eu quero saber se ele mudou ou não.

Eu sei pouco sobre funções hash. Eu tenho um programa chamado FileMenu Tools que inclui uma função para calcular um par de diferentes algoritmos de hash. Espero que o programa funcione corretamente.

Eu fiz o que descrevi com um arquivo, eu, logicamente, terminei com dois arquivos, original e uma cópia que deixei na área de trabalho. Calculei a função hash e não foi a mesma coisa.

Eu não sei porque é isso. O hash varia em que diretório está localizado um arquivo?

O que você pode me recomendar para conseguir o que eu quero, que é a verificação de um arquivo é exatamente o mesmo depois de viajar pelo dispositivo externo?

    
por Santropedro 24.08.2015 / 06:11

1 resposta

0

Uma solução nativa para o Windows (sem fazer download de terceiros) é usar alguns comandos do PowerShell.

Abra o powershell.exe (como usuário ou administrador). Em seguida, use o seguinte comando.

Compare-Object "$(Get-Content $PATH1)" "$(Get-Content $PATH2)"

Você pode definir $PATH1 e $PATH2 nos seus caminhos de arquivo e copiar e colar o comando acima.

Se não retornar nada, os arquivos são idênticos em conteúdo , que é o que eu acredito que você quer. Observe que esse comando não verifica permissões idênticas, data de modificação idêntica, etc. Para comparar data e modo de modificação idênticos, use o comando a seguir.

Compare-Object "$(Get-ItemProperty $PATH1 | Select-Object Mode, LastWriteTime)" "$(Get-ItemProperty $PATH2 | Select-Object Mode, LastWriteTime)"

Para comparar a permissão, use o seguinte comando.

Compare-Object "$(Get-Acl $PATH1).Access" "$(Get-Acl $PATH2).Access"

Novamente, você pode definir $PATH1 e $PATH2 e apenas copiar e colar os comandos acima.

Em todos os três comandos, se ele retorna alguma coisa, você sabe que eles não são os mesmos. Por outro lado, se não retornar nada, você sabe que eles são exatamente os mesmos em conteúdo (primeiro comando), último tempo de gravação e modo (segundo comando) e permissões (terceiro comando).

    
por 25.08.2015 / 07:35