তথ্য পুনরুদ্ধার করতে ফাইলের শেষ প্রান্তটি পড়ুন


12

একটি খুব পুরানো .swp ফাইল আমার সম্পাদিত ফাইলটিকে উল্টিয়ে দিয়েছে, তাই এটি এখন উল্লেখযোগ্যভাবে খাটো। সেই ডিরেক্টরিতে আমি তখন থেকে কিছু করি নি, সুতরাং ফাইলটির অবিলম্বে বাইটগুলি আমার ডাটা থাকা উচিত। প্রদত্ত মেমরির ঠিকানা থেকে এন বাইটগুলি পড়তে আমি কোন ফাংশন ব্যবহার করতে পারি? ddএবং readফাইলের সীমানায় থামুন, যদি না আমি কোথাও একটি বিকল্প মিস করি।

বর্তমান ফাইলের আকার 3.2 কেবি। ফাইলটি কেটে ফেলার আগে ঠিক কত বড় ছিল তা আমার মনে নেই তবে সম্ভবত এটি 10 ​​কেবি-র বেশি নয়। ফাইলের সীমানা উপেক্ষা করে আমি কীভাবে ফাইলের শুরু থেকে 10 কেবি পড়তে পারি? যতক্ষণ আমাকে স্ক্র্যাচ থেকে শুরু করতে হবে না, ততক্ষণ ডেটা পুরোপুরি সংরক্ষণ না করা ভাল It

উত্তর:


18

সাধারণত সম্পাদকরা যখন ফাইলগুলি সংরক্ষণ করেন, তখন তারা মুছুন বা শূন্য করুন 0, যাতে এইভাবে বরাদ্দ স্থান বিনামূল্যে হয় এবং তারপরে লিখুন যা নতুন স্থান বরাদ্দ করে। এটি ফাইল সিস্টেমের ফলে ডেটা সম্পূর্ণ আলাদা শারীরিক অবস্থানে রাখে। সুতরাং আপনার ধারণা কার্যকর হতে পারে না।

আপনি filefragবা ব্যবহার করে কোনও ফাইলের শারীরিক অবস্থান পেতে পারেন hdparm --fibmapএবং তারপরে ddসরাসরি সেই শারীরিক অবস্থানটি পড়তে ব্যবহার করতে পারেন। আমি এই প্রক্রিয়াটি এখানে অন্য একটি প্রসঙ্গে বর্ণনা করেছি: /unix//a/85880/30851


আপনার ক্ষেত্রে সম্ভবত এটি পাঠ্য ডেটা সন্ধানের জন্য সাধারণ পদ্ধতির প্রয়োজন ... এমন কিছু:

strings -n 12 -t d /dev/partition | grep -F 'text snippet'

strings একটানা ASCII ডেটা সন্ধান করবে (ইউটিএফ -8 সম্পর্কে নিশ্চিত নয় এমন কিছু অন্যান্য এনকোডিংগুলিও সমর্থন করে it's এটি কোড বা ইংরেজী হলে আপনার এটির দরকার হবে না) এবং এটি যেখানে পাওয়া গিয়েছিল সেটি অফসেটও মুদ্রণ করবে।

text snippetএকটি নির্ভুল, অনন্য পাঠ্য নমুনা হওয়া উচিত যা আপনি মনে করছেন যে ফাইলটি [একক লাইনে] আপনি খুঁজছেন সেই অংশে রয়েছেন। (আপনি যদি এটি সঠিকভাবে না জানেন তবে আপনি তার পরিবর্তে নিয়মিত ভাব প্রকাশ করতে পারেন p)

-n 12সর্বনিম্ন দৈর্ঘ্য যা অনুসন্ধান stringsকরবে। 12আপনার দৈর্ঘ্য হওয়া উচিত text snippet। এই প্যারামিটারটি alচ্ছিক, যদি সরবরাহ করা হয় তবে এটি আরও strings | grepদ্রুত যেতে সাহায্য করবে।

পুরো পার্টিশনটি পড়তে দীর্ঘ সময় লাগবে তবে যদি সফল হয় তবে আপনার কাছে একটি অফসেট থাকবে যা আপনি ddসাধারণ অঞ্চল দখল করতে খাওয়াতে পারবেন এবং তারপরে নয় এমন জিনিসগুলি সরিয়ে ফেলুন।

সেই ডিরেক্টরিতে আমি তখন থেকে কিছুই করি নি

যদি আপনার ডিরেক্টরিটি একটি মাউন্টপয়েন্ট হিসাবে না ঘটে ... বেশিরভাগ ফাইল সিস্টেমগুলি "প্রতি ডিরেক্টরি প্রতি" সত্যিই স্থান সংরক্ষণ করে না ... পুরো ফাইল সিস্টেমে যে কোনও এবং সমস্ত লেখাগুলি আপনার সন্ধান করা বিটটি ওভাররাইট করতে পারে। ডেটা পুনরুদ্ধারের পরিস্থিতিতে আপনি সাধারণত পুরো জিনিসটিকে কেবল পঠনযোগ্য মোডে স্যুইচ করেন।


মনে রাখবেন যে প্রতিটি ফাইল অনেকগুলি ব্লকে সংরক্ষিত থাকে এবং সেগুলি সাধারণত পরপর সংরক্ষণ করা হয় না। সুতরাং stringsশুধুমাত্র ফাইলের কিছু অংশ চিহ্নিতকরণ, যদি না আপনি অত্যন্ত ভাগ্যবান হবে।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

3
একেবারে বিপরীতে, খণ্ডিত 10 কেবি ফাইল খুঁজতে আপনাকে অত্যন্ত দুর্ভাগ্য হতে হবে। আপনি যদি কেবল একটি অংশ খুঁজে পান তবে সম্ভবত অন্যান্য অংশটি এই ক্ষেত্রে ওভাররাইট করা হয়েছিল। তবে যদি না সেই ফাইলসিস্টেমটিতে আপনার প্রচুর লেখার ক্রিয়াকলাপ না থাকে বা তাত্ক্ষণিকভাবে ফেলে দেওয়া এসএসডি না থাকে, আপনি যদি সম্পাদনা করার সময় সেই ফাইলটি বেশ কয়েকবার সংরক্ষণ করেন তবে আপনি সেই ফাইলটির অনেকগুলি অনুলিপি পেতে পারেন।
frostschutz

3
strings -n16দ্রুত বাড়াতে আমি প্রস্তাবনা বা কিছু যুক্তিসঙ্গত ন্যূনতম দৈর্ঘ্য চাই ।
পিটার কর্ডেস

ভাল পয়েন্ট, উত্তরে এটি যুক্ত।
frostschutz

4
একটি গুচ্ছ ধন্যবাদ। ফাইলটির ঠিক শেষের আগে কেবল আবর্জনা ছিল, তবে stringsআমি পার্টিশনের পুরো ফাইলটি অন্য কোথাও খুঁজে পেতে সক্ষম হয়েছি। এটি প্রায় দুই মাসের কাজ আমাকে করতে হবে না, এবং গুরুত্বপূর্ণ কোনও কিছুর জন্য সর্বদা সংস্করণ নিয়ন্ত্রণ ব্যবহার করার জন্য একটি দুর্দান্ত অনুস্মারক।
ম্যাথু বেডফোর্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.