一部のマシン間で大きなファイルを同期する必要があります。ファイルのサイズは最大6GBです。同期は数週間ごとに手動で行われます。ファイル名はいつでも変更できるため、考慮に入れることはできません。
私の計画は、宛先PCとソースPCでチェックサムを作成し、チェックサムが付いていないすべてのファイルを宛先にコピーすることです。私の最初の試みは次のようなものでした:
using System.IO;
using System.Security.Cryptography;
private static string GetChecksum(string file)
{
using (FileStream stream = File.OpenRead(file))
{
SHA256Managed sha = new SHA256Managed();
byte[] checksum = sha.ComputeHash(stream);
return BitConverter.ToString(checksum).Replace("-", String.Empty);
}
}
問題はランタイムでした:
-SHA256で1.6 GBファイル-> 20分-MD5で1.6
GBファイル-> 6.15分
チェックサムを取得するためのより良い-より速い-方法はありますか?