ইনড নম্বরটি খুঁজে পেতে lsof ব্যবহার করুন এবং এর সাথে একটি হার্ড লিঙ্কটি পুনরায় তৈরি করতে ডিবাগফগুলি ব্যবহার করুন। উদাহরণ স্বরূপ:
# lsof -p 12345 | grep /var/log/messages
syslogd 12345 root 3w REG 8,3 3000 987654 /var/log/messages (deleted)
# mount | grep var
/dev/sda2 on /var type ext3 (rw)
# debugfs -w /dev/sda2
debugfs: cd log
debugfs: ln <987654> tmp
debugfs: mi tmp
Mode [0100600]
User ID [0]
Group ID [0]
Size [3181271]
Creation time [1375916400]
Modification time [1375916322]
Access time [1375939901]
Deletion time [9601027] 0
Link count [0] 1
Block count [6232]
File flags [0x0]
...snip...
debugfs: q
# mv /var/log/tmp /var/log/messages
# ls -al /var/log/messages
-rw------- 0 root root 3301 Aug 8 10:10 /var/log/messages
আপনি অভিযোগ করার আগে, আমি উপরের প্রতিলিপিটি নকল করেছি কারণ এখনই হাতে মুছে ফেলা ফাইলটি নেই ;-)
আমি mi
মুছে ফেলার সময় এবং লিঙ্ক গণনাটি বোধগম্য মানগুলিতে (যথাক্রমে 0 এবং 1) পুনরায় সেট করতে ব্যবহার করি তবে এটি সঠিকভাবে কাজ করে না - আপনি দেখতে পাচ্ছেন যে লিঙ্কের গণনা শূন্যের মধ্যে রয়েছে ls
। আমি মনে করি কার্নেলটি ইনোড ডেটা ক্যাশে করছে। নিরাপদ দিকে থাকতে আপনার সম্ভবত ডিবাগফ ব্যবহার করার পরে প্রথম দিকে সুযোগটি পাওয়া উচিত।
আমার অভিজ্ঞতায় আপনার অস্থায়ী ফাইলের নামটি ব্যবহার করে লিঙ্কটি তৈরি করা উচিত এবং তারপরে যথাযথ নামটি পরিবর্তন করা উচিত। এটিকে সরাসরি মূল ফাইলের নামের সাথে সংযোগ স্থাপনের ফলে ডিরেক্টরি দুর্নীতি দেখা দেয়। YMMV!
readlink /proc/13381/fd/3
-> "/ home / vi / গুরুত্বপূর্ণ_file (মুছে ফেলা)" এবং/home/vi/important_file\ \(deleted\)
সম্ভবত উপস্থিত নেই।