একটি ইনোডের (হার্ড 4) কীভাবে হার্ড লিঙ্ক তৈরি করবেন?


17

যদি আমি কোনও ফাইলের সূচক নোড (ইনোড) জানি, তবে আমি তার পথটি (বা এর কোনও পাথ) জানি না, তবে সরাসরি এই ইনোডের সাথে কোনও হার্ড লিঙ্ক তৈরি করা সম্ভব?

আমি ফাইলটি ব্যবহার করে খুঁজে পেলাম sudo find / -inum 123546এবং তার পরে একটি হার্ডলিঙ্ক তৈরি করতে পারি, তবে এটি আমার অ্যাপ্লিকেশনটির জন্য খুব ধীর হবে।

এনবি আমি একটি এক্সট 4 ফাইল সিস্টেম ব্যবহার করছি।


1
নিবিড়ভাবে সম্পর্কিত: ফাইলটিকে তার ইনোডের মাধ্যমে অপসারণ বা নামকরণ (উভয়ই সরাসরি করা সমানভাবে অসম্ভব)।
গিলস

উত্তর:


23

আফাইক, কার্নেল এপিআই সহ নয়। যদি এই ধরনের ইন্টারফেসের অস্তিত্ব থাকে, তবে এটি সুপার-ব্যবহারকারীর মধ্যে সীমাবদ্ধ থাকতে হবে কারণ অন্যথায় যে কারও কাছে ডিরেক্টরিতে অ্যাক্সেস নেই এমন ডিরেক্টরিতে ফাইল অ্যাক্সেস করতে দেয়।

তবে আপনি debugfsএটি করতে ফাইল সিস্টেমে (একবার এটি মাউন্ট না করা) ব্যবহার করতে পারেন (ধরে নিই যে ব্লক ডিভাইসে আপনার লেখার অ্যাক্সেস রয়েছে)।

ডিবাগ-ডাব্লু / ডেভ / ব্লক / ডিভাইস

( /dev/block/deviceফাইল সিস্টেমের মধ্যে থাকা প্রকৃত ব্লক ডিভাইসটি প্রতিস্থাপন করুন )।

তারপরে, প্রম্পটে debugfsপ্রবেশ করুন

স্ট্যাট < 123 >
(অ্যাঙ্গেল ব্র্যাকেট সহ, 123 এর পরিবর্তে প্রকৃত ইনোড নম্বর দিয়ে প্রতিস্থাপন করা) ফাইলটি উপস্থিত রয়েছে কিনা তা পরীক্ষা করতে (ইনোডে 0 এর চেয়ে বড় লিঙ্ক গণনা রয়েছে) এবং এটি কোনও ডিরেক্টরি নয়।

সব কিছু ঠিক থাকলে লিখুন:

ln < 123 > পথ / থেকে / নতুন ফাইল
হার্ডলিঙ্ক তৈরি করতে (নোট করুন যে পথটি ফাইল সিস্টেমের মূলের সাথে সম্পর্কিত)। অনুসরণ করেছেন:

মাই < 123 >
লিঙ্ক গণনা বৃদ্ধি করতে ( Enterআপনি বর্তমান মানটিতে 1 যোগ করতে চাইবেন এমন লিঙ্ক গণনা ব্যতীত সমস্ত ক্ষেত্রের জন্য টিপুন )।


6
এই ধরনের একটি ইন্টারফেসটিও পরীক্ষা করে দেখতে হবে যে ফাইলটির ননজারো লিঙ্ক গণনা রয়েছে, অন্যথায় মুছে ফেলা-তবু-এখনও-খোলা ফাইলটিকে পুনরুত্থিত করা সম্ভব হবে, যা আইআইআরসি প্রত্যাখ্যান করেছিল কারণ এটি কার্নেল আক্রমণকারীদের লঙ্ঘন করে।
গিলস

2
@ গিলস সম্পর্কিত: unix.stackexchange.com/a/499760/308316
মশভী

1
@ ফিলিপকৌলিং, একটি ডিরেক্টরিতে এক্সিকিউট করার অনুমতি বিট অনুসন্ধানের অনুমতিতে অনুবাদ করে । আমি ইতিমধ্যে ডিরেক্টরিগুলিতে বলেছি তখন অনুসন্ধানের অ্যাক্সেস নেই
স্টাফেন চেজেলাস

3
@ ওরেঞ্জডগ, অনুসন্ধানের অনুমতি হল পসিক্স স্ট্যান্ডার্ড দ্বারা ব্যবহৃত পরিভাষা।
স্টাফেন চেজেলাস

1
@ মোসভি: এই চেকটি কার্নেল থেকে সরানো যেতে পারে। যদিও এটি নিজে হোসে না হয় তার জন্য আপনাকে ভিএফএসে বেশ কয়েকটি জায়গা প্যাচ করতে হবে। আমি বছরখানেক আগে আমার থিসিসে কাজ করার সময় এটি করেছি।
জোশুয়া

3

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

যেমন

mkdir -pm 0700 by-inode/{0..999}
find <path> ! -type d -printf "%i/%p\0" |
  while IFS=/ read -rd '' i n; do
    ln "$n" "by-inode/$((i/1000))/$i"
  done

(ধরে নিলাম আপনার ইনোড নম্বরগুলি সমস্ত 1,000,000 এর চেয়ে কম, প্রয়োজন হলে আরও ডিরেক্টরি তৈরি করুন)।

এরপরে, আপনার ইনোডগুলি 1000-ভিত্তিক গোষ্ঠীযুক্ত এবং by-inode/গাছে সংগ্রহ করা হবে । সেখান থেকে, আপনি প্রয়োজন হিসাবে তাদের লিঙ্ক করতে পারেন।

নোট করুন যদিও এর অর্থ এই <path>যে অতিরিক্ত হার্ড লিঙ্কের কারণে ফাইলগুলি মুছে ফেলা স্থানটিকে পুনরায় দাবি করবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.