عند فحص مجلد كبير بحثًا عن ملفات متطابقة، يمكن حساب SHA-256 لكل ملف مباشرة، لكن هذا يعني قراءة محتوى كل ملف حتى لو كان من الواضح منذ البداية أنه لا يساوي أي ملف آخر. توجد خطوة أرخص يمكن تنفيذها أولًا: مقارنة الحجم.
المرحلة الأولى: Group by size
ملف حجمه 5 MB لا يمكن أن يكون متطابقًا byte-for-byte مع ملف حجمه 7 MB. لذلك يمكن قراءة metadata الخاصة بالحجم وتجميع الملفات ذات الحجم نفسه. أي مجموعة تحتوي ملفًا واحدًا فقط تُستبعد فورًا من مرحلة hashing.
المرحلة الثانية: SHA-256 للمرشحين
بعد فلترة الحجم، نحسب SHA-256 فقط للملفات الموجودة داخل مجموعات لديها أكثر من ملف. إذا تطابق الحجم وتطابق الـhash، يصبح لدينا دليل قوي جدًا على تطابق المحتوى، ويمكن عرض هذه الملفات ضمن مجموعة مكررة.
لماذا هذه الطريقة مناسبة لتطبيق سطح مكتب؟
- تقلل قراءة الملفات غير الضرورية.
- تجعل التقدم في الفحص أسهل في التفسير للمستخدم.
- تسمح بإظهار مجموعات التكرار والمساحة المهدورة بصورة منظمة.
- تنسجم مع مبدأ المعاينة قبل أي عملية حذف أو تغيير.
هذه الفكرة مستخدمة في مشروع Smart File Manager المنشور ضمن أعمالي، ويمكن مراجعة بنية المشروع والكود من مستودع GitHub المرتبط به.