web-dev-qa-db-ja.com

コピーされた2つのファイルがWindowsでまったく同じであることを確認するにはどうすればよいですか?

Windows 7 Home StarterEditionを実行しているSamsungrv420でバックアップを行っています。

そのためには、パソコンから外部機器にコピーする際に、コピーするファイルが少しも変わらないようにしたいと思います。そのために、次の手順を実行します。コンピューターからファイルを取得し、それを外部デバイスにコピーしてから、外部デバイスからコンピューターに再度コピーします。そのため、ファイルはデバイスを「移動」しました。ファイルが変更されたかどうかを知りたいのですが。

私はハッシュ関数をほとんど知りません。 FileMenu Tools というプログラムがあります。このプログラムには、いくつかの異なるハッシュアルゴリズムを計算するための関数が含まれています。プログラムが適切に機能することを願っています。

私はファイルを使って説明したことを行いました。論理的には、オリジナルとデスクトップに残したコピーの2つのファイルで終わりました。ハッシュ関数を計算しましたが、同じではありませんでした。

なぜなのかわかりません。ハッシュは、ファイルが配置されているディレクトリによって異なりますか?

外付けデバイスを移動した後、ファイルがまったく同じであることを確認するという、私が望むことを達成するために私に何を勧めることができますか?

2
Santropedro

(サードパーティをダウンロードせずに)Windowsのネイティブソリューションは、いくつかのPowerShellコマンドを使用することです。

Powershell.exeを(ユーザーまたは管理者として)開きます。次に、次のコマンドを使用します。

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

$PATH1$PATH2をファイルパスに設定し、上記のコマンドをコピーして貼り付けることができます。

何も返されない場合、ファイルはcontentで同一です。これは、あなたが望むと私が信じているものです。このコマンドは、同一のアクセス許可、同一の変更日などをチェックしないことに注意してください。同一の変更日とモードを比較するには、次のコマンドを使用します。

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

権限を比較するには、次のコマンドを使用します。

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

ここでも、$PATH1$PATH2を設定し、上記のコマンドをコピーして貼り付けることができます。

3つのコマンドすべてで、何かが返される場合は、それらが同じではないことがわかります。一方、何も返されない場合は、内容(1番目のコマンド)、最終書き込み時間とモード(2番目のコマンド)、およびアクセス許可(3番目のコマンド)がまったく同じであることがわかります。

2
nehcsivart

Powershellでは、両方のファイルのファイルハッシュを簡単に計算し、比較することができます

> Get-FileHash -Algorithm SHA256 .\file1.exe
> Get-FileHash -Algorithm SHA256 .\file2.exe
1
juFo