Saya harus menyinkronkan file besar di beberapa mesin. Ukuran file bisa hingga 6GB. Sinkronisasi akan dilakukan secara manual setiap beberapa minggu. Saya tidak dapat mempertimbangkan nama file karena mereka dapat berubah kapan saja.
Rencana saya adalah membuat checksum pada PC tujuan dan pada PC sumber dan kemudian menyalin semua file dengan checksum, yang belum ada di tujuan, ke tujuan. Upaya pertama saya adalah seperti ini:
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);
}
}
Masalahnya adalah runtime:
- dengan SHA256 dengan File 1,6 GB -> 20 menit
- dengan MD5 dengan File 1,6 GB -> 6,15 menit
Apakah ada cara yang lebih baik - lebih cepat - untuk mendapatkan checksum (mungkin dengan fungsi hash yang lebih baik)?