1. ডুপ্লিকেট ডেটার উত্স এবং প্রভাব বোঝা
প্রথমে, আমাদের বুঝতে হবে কেন এত ডুপ্লিকেট ডেটা তৈরি হয় । একটি অভিধান ফাইল নির্মাণের সময়, একাধিক তথ্য উত্স থেকে তথ্য সংগ্রহ করা সম্ভব, এবং এই তথ্য উত্সগুলির মধ্যে আংশিক ওভারল্যাপ রয়েছে । উদাহরণস্বরূপ, বিভিন্ন শব্দ তালিকা, সাধারণ পাসওয়ার্ড সেট, বিভিন্ন অক্ষর সংমিশ্রণ তালিকা ইত্যাদি থেকে তথ্য সংগ্রহ করার সময়, কিছু মৌলিক শব্দ বা সহজ পাসওয়ার্ড সংমিশ্রণ একাধিক উত্সে উপস্থিত থাকতে পারে ।
এই ডুপ্লিকেট ডেটার অনেক বিরূপ প্রভাব থাকবে । স্টোরেজের দৃষ্টিকোণ থেকে, 2T-এর স্থান ইতিমধ্যেই অনেক বড় যদি এতে প্রচুর পরিমাণে ডুপ্লিকেট সামগ্রী থাকে, তাহলে এটি মূল্যবান স্টোরেজ স্পেস নষ্ট করার সমতুল্য । যখন আপনি আসলে পাসওয়ার্ড ক্র্যাকিং বা অন্যান্য অপারেশনগুলির জন্য এই অভিধান ফাইলটি ব্যবহার করেন, তখন ডুপ্লিকেট সামগ্রী অপ্রয়োজনীয় অনুসন্ধান এবং তুলনা অপারেশনগুলির দিকে পরিচালিত করতে পারে । উদাহরণস্বরূপ, যদি পাসওয়ার্ড ক্র্যাকিংয়ের সময়, অ্যালগরিদমকে অভিধানের বিষয়বস্তুকে লক্ষ্য পাসওয়ার্ডের সাথে একে একে তুলনা করতে হয়, পুনরাবৃত্তিমূলক বিষয়বস্তু তুলনার সংখ্যা বাড়িয়ে দেবে, যার ফলে পুরো ক্র্যাকিং প্রক্রিয়াটি ধীর হয়ে যাবে ।
2. পাঠ্য প্রক্রিয়াকরণ সরঞ্জামের উপর ভিত্তি করে ফিল্টারিং পদ্ধতি
উইন্ডোজ সিস্টেমের অধীনে সরঞ্জামগুলি ব্যবহার করুন
- পাওয়ারশেল ব্যবহার করুন
- উইন্ডোজ সিস্টেমে, পাওয়ারশেল সমৃদ্ধ পাঠ্য প্রক্রিয়াকরণ ক্ষমতা প্রদান করে । আমরা ডুপ্লিকেট লাইনগুলি সরাতে নিম্নলিখিত পাওয়ারশেল স্ক্রিপ্ট ব্যবহার করতে পারি:
```powershell
$lines = Get - Content "dictionary.txt"
$uniqueLines = @()
foreach ($line in $line) {
if ($uniqueLines - $line নেই) {
```
এই স্ক্রিপ্টটি প্রথমে "dictionary.txt" এর সমস্ত লাইন একটি অ্যারে "$lines" এ পড়ে । তারপর, প্রতিটি সারিটি একটি লুপের মাধ্যমে অতিক্রম করা হয় এবং যদি একটি সারি নতুন অ্যারে "$ uniqueLines" না থাকে তবে এটি নতুন অ্যারে যোগ করা হয় । অবশেষে, নতুন অ্যারের বিষয়বস্তু "unique_dictionary.txt" এ সংরক্ষণ করুন ।
বিভাজন ও জয় অ্যালগরিদম
- যেহেতু আমাদের অভিধান ফাইলগুলি খুব বড় (2T), তাই সরাসরি প্রক্রিয়াকরণের সময় অপর্যাপ্ত মেমরির মতো সমস্যার সম্মুখীন হতে পারে । বিভাজন এবং জয় অ্যালগরিদম এই সমস্যার একটি ভাল সমাধান করতে পারে । আমরা এই বড় ফাইলটিকে বেশ কয়েকটি ছোট সাবফাইলগুলিতে বিভক্ত করতে পারি । উদাহরণস্বরূপ, আমরা একটি নির্দিষ্ট সংখ্যক লাইন বা ফাইলের আকার অনুযায়ী এটি বিভক্ত করতে পারি ।
- তারপর, প্রতিটি সাবফাইল আলাদাভাবে বারবার ফিল্টার করা হয় । প্রক্রিয়াকৃত সাবফাইলগুলিকে একটি ফাইলে পুনরায় একত্রিত করুন । মার্জিং প্রক্রিয়া চলাকালীন, আপনাকে ডুপ্লিকেট সামগ্রীর জন্য আবার পরীক্ষা করতে হবে কারণ একই সামগ্রী বিভিন্ন সাবফাইলগুলির মধ্যে বিদ্যমান থাকতে পারে ।
4. ফিল্টারিং ফলাফল যাচাই করুন
বারবার ফিল্টারিং সম্পূর্ণ করার পরে, আমাদের ফলাফল সঠিক কিনা তা যাচাই করতে হবে । আপনি কিছু সহজ পদ্ধতি ব্যবহার করতে পারেন, যেমন এলোমেলোভাবে কিছু লাইন আঁকুন এবং মূল ফাইল এবং ফিল্টার করা ফাইলগুলিতে এই লাইনগুলির সংখ্যা পরীক্ষা করুন । যদি এটি মূল ফাইলে একাধিকবার প্রদর্শিত হয় এবং ফিল্টার করা ফাইলে শুধুমাত্র একবার প্রদর্শিত হয়, তাহলে ফিল্টারিং বৈধ ।
এছাড়াও, আপনি মূল ফাইল এবং ফিল্টার করা ফাইলের আকারের তুলনা করতে পারেন । যদি ফিল্টার করা ফাইলের আকার মূল ফাইলের তুলনায় উল্লেখযোগ্যভাবে ছোট হয় এবং পরবর্তী পরীক্ষাগুলিতে স্বাভাবিকভাবে কাজ করে (যেমন একটি সাধারণ পাসওয়ার্ড অনুসন্ধান পরীক্ষার জন্য এই অভিধান ফাইলটি ব্যবহার করে এটি সঠিকভাবে কাজ করে কিনা এবং যে পাসওয়ার্ড থাকা উচিত তা অনুপস্থিত নয়), এটি ব্যাখ্যা করা যেতে পারে যে বারবার ফিল্টারিং কাজ ভাল ফলাফল অর্জন করেছে ।
আমাদের সার্ভার 512G মেমরি ব্যবহার করে, একটি উচ্চ-গতির NVMe প্রোটোকল হার্ড ড্রাইভ সার্ভার সফলভাবে প্রক্রিয়াকরণ সম্পূর্ণ করতে অর্ধেক মাস লেগেছিল, এবং আপনার যদি প্রকারের প্রয়োজন হয় তবে আপনি যোগাযোগের জন্য ওয়েবসাইট গ্রাহক পরিষেবার সাথে যোগাযোগ করতে পারেন পুনরাবৃত্তি প্রক্রিয়া চলাকালীন যে সমস্যাগুলি সম্মুখীন হয়েছিল সেইসাথে স্বয়ংক্রিয় প্রক্রিয়াকরণ স্ক্রিপ্ট লেখা!
2T এর টেক্সট টাইপ ডিকশনারি ফাইল থেকে ডুপ্লিকেট ফিল্টার করা একটি চ্যালেঞ্জিং কিন্তু অত্যন্ত প্রয়োজনীয় কাজ । যুক্তিসঙ্গতভাবে সরঞ্জাম এবং অ্যালগরিদম নির্বাচন করে, আমরা কার্যকরভাবে ডুপ্লিকেট বিষয়বস্তু অপসারণ করতে পারি এবং অভিধান ফাইলগুলির গুণমান এবং ব্যবহারের দক্ষতা উন্নত করতে পারি, যা এই অভিধান ফাইলের উপর ভিত্তি করে পাসওয়ার্ড ক্র্যাকিং এবং অন্যান্য অ্যাপ্লিকেশন পরিস্থিতিতে অত্যন্ত তাৎপর্যপূর্ণ ।