Tôi phải đồng bộ các tệp lớn trên một số máy. Các tập tin có thể có kích thước lên tới 6GB. Việc đồng bộ sẽ được thực hiện thủ công cứ sau vài tuần. Tôi không thể xem xét tên tệp vì chúng có thể thay đổi bất cứ lúc nào.
Kế hoạch của tôi là tạo tổng kiểm tra trên PC đích và trên PC nguồn và sau đó sao chép tất cả các tệp có tổng kiểm tra chưa có ở đích đến đích. Nỗ lực đầu tiên của tôi là một cái gì đó như thế này:
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);
}
}
Vấn đề là thời gian chạy:
- với SHA256 với Tệp 1,6 GB -> 20 phút
- với MD5 với Tệp 1,6 GB -> 6,15 phút
Có cách nào tốt hơn - nhanh hơn - để có được tổng kiểm tra (có thể với hàm băm tốt hơn) không?