मुझे कुछ मशीनों में बड़ी फ़ाइलों को सिंक करना होगा। फ़ाइलें आकार में 6GB तक हो सकती हैं। सिंक हर कुछ हफ्तों में मैन्युअल रूप से किया जाएगा। मैं फ़ाइल नाम को ध्यान में नहीं रख सकता क्योंकि वे कभी भी बदल सकते हैं।
मेरी योजना गंतव्य पीसी और स्रोत पीसी पर चेकसम बनाने की है और फिर सभी फाइलों को एक चेकसम के साथ कॉपी करें, जो गंतव्य में पहले से गंतव्य पर नहीं हैं। मेरा पहला प्रयास कुछ इस तरह था:
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 मिनट
क्या चेकसम प्राप्त करने का एक बेहतर - तेज़ - तरीका है (शायद एक बेहतर हैश फ़ंक्शन के साथ)?