একটি হার্ড লিঙ্ক এবং একটি প্রতীকী লিঙ্ক মধ্যে পার্থক্য কি?


487

শিরোনাম হিসাবে, আমি কমান্ড দ্বারা নির্মিত একটি হার্ড লিঙ্ক এবং একটি নরম লিঙ্কের মধ্যে পার্থক্য জানতে চাই ln। কমান্ডটি man lnতথ্য সরবরাহ করে, তবে আমার প্রশ্নের যথেষ্ট উত্তর দেয় না।

এছাড়াও, ভাল লাগবে যদি কেউ এমন একটি সেটিংস সরবরাহ করতে পারে যেখানে প্রতীকী লিঙ্কের চেয়ে হার্ড লিঙ্কটি পছন্দনীয় হতে পারে।


15
পার্থক্যগুলির মধ্যে একটি ... আপনার কাছে কিছু ফাইল রয়েছে, উদাহরণস্বরূপ ফাইল পরীক্ষা। যদি আপনি এলএন টেস্টের হার্ডলিঙ্ক তৈরি করেন, এলএন -এস পরীক্ষা সিমিলিংক তৈরি করুন এবং তারপরে ফাইল পরীক্ষাটি অন্য ডিয়ার (বা নাম পরিবর্তন করুন) এ সরান, সিমলিংক কাজ করবে না। হার্ডলিঙ্ক কাজ করবে। এখন ফাইল পরীক্ষা মোছার চেষ্টা করুন। হার্ডলিঙ্কটি এখনও কাজ করবে, আসলে আপনি হার্ডলিঙ্কের সংখ্যা 0 ফাইল না হওয়া পর্যন্ত ফাইলটি অ্যাক্সেস করতে সক্ষম হবেন ইনোডের কারণে, এটি ম্যানুয়ালটিতে লেখা আছে ...
ডেনওয়ারকো

5
আমি এটি আবার খুললাম কারণ এটি এই ইস্যুতে একটি ভাল জেনেরিক উত্তরের দাবি রাখে (পূর্ববর্তী প্রশ্নের তুলনায় যা একটি অস্পষ্ট সি উদাহরণ ছিল)।
অলি


1
এছাড়াও বেশ একটি সম্পূর্ণ উত্তর: stackoverflow.com/questions/185899/...
Elzo Valugi

@ অভিষেক ভাটিয়া ভিডিওটি উপলভ্য নয়
ওকার

উত্তর:


58

লিনাক্স / ইউনিক্সে শর্টকাটগুলি লিংক হিসাবে পরিচিত


লিঙ্ক দুটি ধরণের: নরম লিঙ্ক (প্রতীকী লিঙ্ক) বা হার্ড লিঙ্কগুলি।

  1. সফট লিঙ্কস (প্রতীকী লিঙ্কগুলি)

    আপনি ফাইল এবং ডিরেক্টরিতে লিঙ্ক তৈরি করতে পারেন এবং আপনি বিভিন্ন পার্টিশনে এবং মূল থেকে আলাদা ইনড নম্বরের সাথে লিঙ্কগুলি (শর্টকাট) তৈরি করতে পারেন।

    যদি আসল অনুলিপি মুছে ফেলা হয় তবে লিঙ্কটি কাজ করবে না

  2. হার্ড লিঙ্কস

    হার্ড লিঙ্কগুলি কেবল ফাইলগুলির জন্য; আপনি আলাদা আলাদা ইনোড নম্বর দিয়ে আলাদা পার্টিশনের কোনও ফাইলের সাথে লিঙ্ক করতে পারবেন না।

    যদি আসল অনুলিপিটি মুছে ফেলা হয় তবে লিঙ্কটি কাজ করবে , কারণ এটি অন্তর্নিহিত ডেটা অ্যাক্সেস করে আসল অনুলিপিটি অ্যাক্সেস করছিল।


প্রশ্ন: আমি কীভাবে নরম লিঙ্ক তৈরি করব?

উত্তর: একটি নরম লিঙ্ক দিয়ে তৈরি করা যেতে পারে ln -s; প্রথমে আপনাকে উত্সটি সংজ্ঞায়িত করতে হবে এবং তারপরে আপনাকে গন্তব্যটি নির্ধারণ করতে হবে। (মনে রাখবেন আপনার উত্স এবং গন্তব্য উভয়ের পুরো পথ নির্দিষ্ট করতে হবে; অন্যথায় এটি কার্যকর হবে না))

 sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib32/libGL.so.1
             (----------Source-------)             ( Destination )

এখানে চিত্র বর্ণনা লিখুন

আপনি দেখতে পাচ্ছেন এটির একটি আলাদা ইনোড রয়েছে এবং এটি একটি পৃথক বিভাজনে তৈরি করা যেতে পারে।


প্রশ্ন: আমি কীভাবে হার্ড লিঙ্ক করব?

উত্তর: একটি হার্ড লিঙ্ক দিয়ে তৈরি করা যেতে পারে ln; প্রথমে আপনাকে উত্সটি সংজ্ঞায়িত করতে হবে এবং তারপরে আপনাকে গন্তব্যটি নির্ধারণ করতে হবে। (মনে রাখবেন আপনার উত্স এবং গন্তব্য উভয়েরই পুরো পথটি নির্দিষ্ট করতে হবে; অন্যথায় এটি কার্যকর হবে না not)

ধরা যাক আমার /scriptনামের একটি ডিরেক্টরিতে স্ক্রিপ্ট আছে firefox

 ls -i # Shows you the inode
 5898242 firefox

 ln /scripts/firefox /scripts/on-fire
       ( Source )    ( Destination )

এখানে চিত্র বর্ণনা লিখুন

আপনি দেখতে পারেন, এটি একই ইনোড আছে। যদি আমি আসলটি মুছে ফেলি তবে লিঙ্কটি কাজ করবে এবং এটি মূল হিসাবে কাজ করবে।

এখানে চিত্র বর্ণনা লিখুন

উপরে আমি লিঙ্কটি কাজ করছে কিনা তা পরীক্ষা করে দেখুন এবং তারপরে মূল ফায়ারফক্স স্ক্রিপ্টটি মুছুন।


আপনার প্রশ্ন: কেউ যদি এমন একটি সেটিংস সরবরাহ করতে পারে যেখানে প্রতীকী লিঙ্কের চেয়ে হার্ড লিঙ্কটি পছন্দনীয় হতে পারে।

উত্তর : ডিস্ক বিভাজন বিন্যাসের উপর নির্ভর করে, হার্ড লিঙ্কগুলির সীমাবদ্ধতা রয়েছে যে সেগুলি অবশ্যই একই পার্টিশনে থাকতে হবে (-1 পয়েন্ট) এবং কেবলমাত্র ফাইলগুলিতে লিঙ্ক করতে পারে (-1 পয়েন্ট ), তবে মূল লিঙ্কটি মুছে ফেলা হলে +1 পয়েন্ট কাজ করবে এবং এটি আসলটির মতো কাজ করবে।

অন্যদিকে, একটি সফ্ট লিঙ্ক ডিরেক্টরি বা ফাইলগুলিতে নির্দেশ করতে পারে (+1 পয়েন্ট) এবং কোনও পার্টিশনের সীমাবদ্ধতা (+1 পয়েন্ট) নেই, তবে (-1 পয়েন্ট) যদি উত্সটি মোছা হয় তবে লিঙ্কটি কাজ করবে না।


আমি কি একটি শক্ত লিঙ্ক তৈরি করতে এবং উত্স হিসাবে ইনোড সরবরাহ করতে পারি?
টিএমটিটিএম

324

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

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


1
এমন একটি জিনিস যা (নিজস্ব কথায়) "ফাইলটির দিকে নির্দেশ করে" পয়েন্টার বলা যেতে পারে (এটি তুচ্ছভাবে প্রায় টোটোলজিক্যালি সত্য)। যদি আমরা নীটপিকিং করছি তবে (সাধারণভাবে) হার্ডলিঙ্কগুলির ধারণাটি যদি কোনও ফাইল সিস্টেম আইওনড ব্যবহার না করে তবেই থাকতে পারে।
jfs

319

"একটি ছবি হাজার শব্দের সমান." চিত্রের উপস্থাপনা


এবং, "একটি উদাহরণ একশ অনুচ্ছেদে মূল্যবান ..."

দুটি ফাইল তৈরি করুন:

$ touch blah1   
$ touch blah2

তাদের মধ্যে কিছু তথ্য প্রবেশ করুন:

$ echo "Cat" > blah1
$ echo "Dog" > blah2

এবং যেমন প্রত্যাশিত:

$cat blah1; cat blah2
Cat
Dog

আসুন শক্ত এবং নরম লিঙ্কগুলি তৈরি করুন:

$ ln blah1 blah1-hard
$ ln -s blah2 blah2-soft

আসুন দেখুন কী ঘটেছিল:

$ ls -l

blah1
blah1-hard
blah2
blah2-soft -> blah2

ব্লাহ 1 এর নাম পরিবর্তন করা কোনও বিষয় নয়:

$ mv blah1 blah1-new
$ cat blah1-hard
Cat

ফাইলের ইনড, বিষয়বস্তুগুলিতে ব্লাহ 1-হার্ড পয়েন্টস - এটি পরিবর্তন করা হয়নি।

$ mv blah2 blah2-new
$ ls blah2-soft
blah2-soft
$ cat blah2-soft  
cat: blah2-soft: No such file or directory

ফাইলটির বিষয়বস্তু সন্ধান করা যায়নি কারণ নরম লিঙ্কটি নামের দিকে নির্দেশ করে, এটি পরিবর্তিত হয়েছিল, এবং সামগ্রীতে নয়।
একইভাবে, যদি ব্লাহ 1 মুছে ফেলা হয়, তবে ব্লাহ 1-হার্ড এখনও সামগ্রীগুলি ধরে রাখে; যদি ব্লাহ 2 মুছে ফেলা হয় তবে ব্লাহ 2-সফট হ'ল একটি অ-বিদ্যমান ফাইলের লিঙ্ক।


উত্স: স্ট্যাকওভারফ্লো থেকে এটি অনুলিপি করে অনুলিপি করা হচ্ছে!


13
আপনার কাছে ন্যায্য হতে - আপনি শীর্ষে সুন্দর চিত্রটি জুড়েছিলেন ... আহ আপনি এটিও অনুলিপি করেছেন! দুটি উত্তর
মিলানো

2
কোথাও ভাল ব্যাখ্যা করা হয়েছে!
ডেনিসবট

3
আমি 20 সেকেন্ডের জন্য ইমেজটির দিকে তাকাতে থাকি এবং তারপরে হঠাৎ করে আমি এটি আবিষ্কার করি। এটি আসলে উজ্জ্বল।
মোহাম্মদ জোরেড

1
বিটিডব্লিউ: হার্ডলিঙ্কগুলি ব্যবহার git করা একটি খারাপ ধারণা , ঠিক যদি কেউ (নরম লিঙ্কে হতাশ) বিস্মিত হয় ... অন্য সংস্করণ সিস্টেমেও এটি প্রয়োগ করতে পারে।
ফ্রাঙ্ক নোক

1
এর হার্ডলিঙ্কগুলির একটি আইওনোড কি কোনও ডিভাইসে মেঘে সঞ্চিত ফাইলের অনুরূপ?
ওকার

89

উভয়ই ফাইলগুলিতে পয়েন্টার; পার্থক্যটি পয়েন্টার ধরণের । একটি প্রতীকী লিঙ্ক নামের সাথে অন্য একটি ফাইলের দিকে নির্দেশ করে । এটিতে একটি বিশেষ মোড বিট রয়েছে যা এটি একটি প্রতীকী লিঙ্ক হিসাবে চিহ্নিত করে এবং এর সামগ্রীগুলি হ'ল আসল ফাইলের নাম। যেহেতু এটিতে কেবল একটি নাম রয়েছে, সেই নামটি আসলে থাকতে পারে না বা অন্য কোনও ফাইল সিস্টেমে থাকতে পারে। যদি আপনি নামযুক্ত ফাইলটি প্রতিস্থাপন করেন (এর নামটিকে প্রভাবিত না করে এর বিষয়বস্তু পরিবর্তন করুন), তবে লিঙ্কটিতে এখনও একই নাম রয়েছে এবং তাই এখন এটি নতুন ফাইলটির দিকে নির্দেশ করে। আপনি সহজেই একটি প্রতীকী লিঙ্ক সনাক্ত করতে পারেন এবং এটি ফাইলটির নাম দেখতে পারে।

একটি কঠিন লিঙ্ক ইনোড নম্বর দ্বারা ফাইলের দিকে নির্দেশ করে। যেমন, হার্ড লিঙ্কগুলি কোনও ফাইলের প্রথম নামের চেয়ে আলাদা নয়। বনাম হার্ড লিঙ্কের নাম নেই; সমস্ত হার্ড লিঙ্কগুলি ফাইলের জন্য সমানভাবে বৈধ নাম। এ কারণে, আপনি যে ফাইলটি লিঙ্ক করেছেন সেটি অবশ্যই উপস্থিত থাকতে হবে এবং আপনি সেই লিঙ্কটি তৈরি করতে চাইলে একই ফাইল সিস্টেমে থাকতে হবে। আপনি যদি আসল নামটি মুছে ফেলেন তবে হার্ড লিঙ্কটি এখনও একই ফাইলটিতে নির্দেশ করে। যেহেতু সমস্ত হার্ড লিঙ্কগুলি ফাইলের জন্য সমানভাবে বৈধ নাম (গুলি), আপনি কোনওটির দিকে তাকাতে এবং ফাইলটির অন্য নামগুলি দেখতে পারবেন না; এটি সন্ধান করার জন্য, আপনাকে প্রতিটি ফাইলের দিকে তাকাতে হবে এবং একই রকম ইনোড নম্বর রয়েছে এমন অন্যান্য নাম (গুলি) খুঁজতে তাদের ইনোড নম্বরটি তুলনা করতে হবে।

আউটপুট থেকে কোনও ফাইলের কত নাম রয়েছে তা আপনি বলতে পারেন ls -l। ফাইল মোডের পরে প্রথম সংখ্যাটি হল লিঙ্ক গণনা। 1 টির বেশি লিঙ্কযুক্ত একটি ফাইলের অন্য কোথাও অন্য নাম (গুলি) রয়েছে এবং বিপরীতে, কেবল 1 টির লিঙ্ক গণনা সহ একটি ফাইলের কোনও (অন্যান্য) হার্ড লিঙ্ক নেই।


If you replace the named file, then the link still contains the same name, and so now it points to the new file- আমি মনে করি এটি ভালভাবে ব্যাখ্যা করা হয়নি। আপনার অর্থ কি যদি আমি সেই ফাইলটি প্রতিস্থাপন করি যেখানে আমি প্রতীকী লিঙ্ক পেয়েছি তবে নাম যুক্ত লিঙ্কগুলি অচ্ছুত থেকে যায়। তবে এটি কেবল প্রতিস্থাপিত ফাইলটির দিকে ইঙ্গিত করবে যখন এর ফাইলের নামটি (যেমন নতুন ফাইলটি পুরানোটিকে প্রতিস্থাপন করেছে) প্রতিস্থাপিত (অর্থাত্ পুরানো ফাইল যা নতুন দ্বারা প্রতিস্থাপিত হয়েছিল) একটির মতো, সঠিক?
মাইক 22

@ মাইক, হ্যাঁ: প্রতীকী লিঙ্কটি মূল ফাইলের নামের দিকে ইঙ্গিত করে, সুতরাং সেই ফাইলটি প্রতিস্থাপনের অর্থ লিঙ্কটি এখন নতুন ফাইলটির দিকে নির্দেশ করে।
psusi

তবে কেবল একই নামটি সঠিক পেলে?
মাইক্রো

@ মাইক, দুনিয়া প্রতিস্থাপনের অর্থ এর একই নাম রয়েছে, অন্যথায় আপনি কেবল একটি ফাইল মুছতে এবং
অন্যটিকে

58

একটি হার্ডলিঙ্ক কেবল একই ফাইল সিস্টেমে কাজ করতে পারে, এটি একই ইনোডের জন্য কেবল আলাদা নাম (ফাইলগুলি অভ্যন্তরীণভাবে ইনোড দ্বারা রেফারেন্স করা হয়)। কোনও ফাইল কেবল তখনই ডিস্ক থেকে মুছে ফেলা হবে যখন তার ইনোডের শেষ লিঙ্কটি চলে যাবে (আপনি শেষ লিঙ্কটি rmd বা unlinkd)। হার্ডলিঙ্কগুলি সাধারণত ফাইলের জন্য কাজ করে, ডিরেক্টরি নয়।

একটি সিমিলিংক (প্রতীকী লিঙ্ক) একটি বিশেষ ফাইল যা অন্য কোনও ফাইলে পাথ যুক্ত করে। এই পথটি পরম বা আপেক্ষিক হতে পারে। সিমলিংকগুলি ফাইল সিস্টেমগুলিতে কাজ করতে পারে এবং এমনকি বিভিন্ন ফাইলগুলিতেও নির্দেশ করতে পারে, যদি আপনি উদাহরণস্বরূপ বাহ্যিক হার্ড ড্রাইভটি প্লাগ প্লাগ করে এবং অন্য একটিতে প্রতিস্থাপন করেন, যার একই পথে আলাদা ফাইল রয়েছে। একটি সিমিলিংক ফাইল বা ডিরেক্টরিকে নির্দেশ করতে পারে।


ধন্যবাদ, এটি আমাকে বলে যে তারা কীভাবে কাজ করে তবে হার্ড লিঙ্কটি ঠিক কী করে? এবং কেন এটি ডিরেক্টরিতে কাজ করে না?
ste_kwr

@ ক্নিটল: আপনি নিশ্চিত? কিছু ফাইল সিস্টেমে মনে হয় ডিরেক্টরিগুলির হার্ডলিঙ্কগুলি অনুমোদিত তবে কেবল রুট এগুলি তৈরি করতে পারে। -d, -F, --directoryসুইচ দেখুন । এবং হ্যাঁ, আমি করেছি নোট দেখা ln(1)পৃষ্ঠা :)
0xC0000022L

1
@ কনিওয়ার: হার্ডলিঙ্কগুলি বর্ণনা করার সবচেয়ে সহজ উপায় হ'ল "একই ফাইলটির (অন্যথায়, ডিস্কের ডেটা) কেবল অন্য নাম"। এবং - কমপক্ষে আমার সিস্টেমে (গুলি) - lnডিরেক্টরিগুলিতে হার্ডলিঙ্কগুলি তৈরি করতে ব্যবহার করা যাবে না। ডিরেক্টরিতে হার্ডলিঙ্ক রয়েছে যদিও, সর্বাধিক বিশিষ্ট উদাহরণ হচ্ছে .এবং ..। আমি এটি আমার মূল উত্তরে অন্তর্ভুক্ত করতে চাইনি, কারণ এটি কেবল জিনিসগুলিকে জটিল করে তুলবে।
নিটল

2
@ STATUS_ACCESS_DENIED: ঠিক আছে ... তবে এটি সাধারণত ভাল ধারণা নয়। এজন্য আমি আমার মূল উত্তরে »সাধারণত wrote লিখেছি। উদাহরণ হিসাবে আমার আগের মন্তব্য দেখুন।
নিটল

সুতরাং একটি হার্ড লিঙ্ক একই ফোল্ডার / ফাইলের সাথে এটির বিভিন্ন নামের সাথে ইঙ্গিত করতে পারে যেমন একই নামের সাথে লিঙ্কযুক্ত বিভিন্ন নাম রয়েছে?
চার্লি পার্কার

21

অন্য থ্রেডের উত্তরগুলির মধ্যে একটি (এখন আপনার পোস্টের শীর্ষে লিঙ্কযুক্ত) এই পৃষ্ঠার উল্লেখ করেছে যা আমি মনে করি এটি বেশ ভাল মাঝারি স্তরের ব্যাখ্যা। যদি আপনি অসি শিল্পে হারিয়ে যাচ্ছেন তবে এখানে টিএল; ডাঃ সংস্করণ রয়েছে:

  • স্ট্যান্ডার্ড ফাইলগুলি ফাইল সিস্টেম থেকে একটি ইনোডে একটি পয়েন্টার যা পরিবর্তিত হয় শারীরিক তথ্যের দিকে। ফাইল উপাদান তার ফাইল সিস্টেমের লিঙ্ক (মূলত এর পাথ) এবং ইনোডের একটি লিঙ্ক সংরক্ষণ করে।
  • হার্ড-লিঙ্কগুলি ঠিক ফাইলগুলির মতো। এগুলি সরাসরি একটি ইনোডে কেবলমাত্র অতিরিক্ত পয়েন্টার।
  • সিম্বলিক-লিঙ্কগুলি পৃথক ফাইল (পৃথক ইনোড এবং ডেটা সহ) যা কোনও ফাইলের জন্য একটি ফাইল সিস্টেমের পথ সঞ্চয় করে।

জড়িত কার্নেল এবং ফাইল সিস্টেমগুলি স্বচ্ছভাবে সবকিছু অনুবাদ করে।

সুতরাং এর উপর ভিত্তি করে:

  • হার্ড-লিঙ্কগুলি কেবল একই ফাইল-সিস্টেম সংযোগের অনুমতি দেয়। সিমলিংকগুলি যে কোনও পথে নির্দেশ করতে পারে।
  • হার্ড-লিঙ্কগুলি (মূলত) পরম ডেটাতে নির্দেশ করে। প্রতীকগুলি আপেক্ষিক পাথগুলিতে নির্দেশ করতে পারে (উদাঃ ../parent.file)
  • এক্সটেনশনের মাধ্যমে, আপনি যদি কোনও হার্ড-লিঙ্কের লক্ষ্য পয়েন্টারটি সরান (যা মনে রাখবেন যে নিজেই মূলত কেবল একটি ইনডকে নির্দেশ করা একটি হার্ড লিঙ্ক) তবে হার্ড-লিঙ্কটি এখনও কাজ করে। একটি সিমিলিংকের লক্ষ্য সরিয়ে নেওয়া সাধারণত সিমলিংকটি ভেঙে দেয়।
  • একটি হার্ড-লিঙ্কের সমাধান দ্রুততর তবে প্রচুর পরিমাণে হবে। গতির সেই তুচ্ছ অংশটি একটি অবিচ্ছেদ্য ফাইল সিস্টেমের দামে আসে।

আমি নিজেকে কিছুটা বিভ্রান্ত করে থাকতে পারি তবে বিভিন্ন জিনিস পড়ে, আমি একটি স্ট্যান্ডার্ড ফাইল এবং একটি হার্ডলিঙ্কের মধ্যে পার্থক্য খুঁজে পেতে লড়াই করছি। আমি এটি যেভাবে পড়ছি তা প্রতিটি ফাইলের মধ্যে একটি হার্ডলিঙ্ক (ফাইলের নাম সংরক্ষণ করা) থাকে, যা কোনও ইনোডের সাথে সংযোগ করে যা শারীরিক ডেটাতে নির্দেশ করে।

একটি হার্ডলিঙ্ক যুক্ত করা কেবল একটি অতিরিক্ত ফাইল সিস্টেম-ভিত্তিক পয়েন্টার সহ একটি ইনোড সরবরাহ করে। এটা কি সঠিক?


5
আমি মনে করি আপনি ঠিক বলেছেন, প্রতিটি ফাইলই একটি ইনোডের জন্য একটি পথের নাম এবং একটি হার্ড লিঙ্কটি একই ইনোডের জন্য অতিরিক্ত পথের নাম। সুতরাং একটি হার্ড লিঙ্ক সাধারণ ফাইল থেকে আলাদা নয়।
enzotib

আমি এটি বোঝার চেষ্টা করছি ... তবে আপনি বলবেন:> "সিম্বলিক-লিঙ্কগুলি পৃথক ফাইল (পৃথক ইনোড এবং ডেটা সহ ) যা কোনও ফাইলের ফাইল সিস্টেমের পথ সঞ্চয় করে" " একটি সিমিলিংকের আসলেই আলাদা আলাদা ডেটা থাকে? তারপরে এটি ঠিক কিরকম একটি দিরের সাথে একটি লিপি ঠিক আছে? ... এবং প্রতিবার সিমলিংকে কিছু লেখা থাকলে তা ডিস্কে দুবার লিখতে হবে? কোন অর্থ প্রকাশ করে না.
মিনিগড

@ মনিগড নয় কোনও সিমলিংক হ'ল ডেটা ব্লকের একটি ইনোড যা অন্য ইনোডের (ফাইলের নাম) পাথ সঞ্চয় করে। হ্যাঁ, এটি ম্যাট্রিক্সের মতো বিভ্রান্তিকর তবে একবার পেলে আপনি কখনই ভুলবেন না :)
অলি

@ অলি আমি বিভ্রান্ত হতে পারি তবে আপনি যখন বলেন: "পৃথক ইনোড এবং ডেটা সহ ", আপনার অর্থ এই যে সিমলিংকে আলাদা আলাদা ডেটা রয়েছে !?
মিনিগড

1
@ মিনিগড হ্যাঁ সিমলিংক হ'ল ইনোডকে নির্দেশ করে যা একটি সাধারণ ফাইলের মতো) এবং সেই তথ্যটি একটি পথ is এটি এর চেয়ে কিছুটা বেশি চালাক - সিমলিংকের মাধ্যমে স্বচ্ছ ব্যবহারের অনুমতি দেওয়ার জন্য - তবে এটি মূলত তারা।
অলি

15

সফট লিঙ্ক কখন ব্যবহার করবেন:

ফাইল সিস্টেমে লিঙ্ক: আপনি যদি ফাইল সিস্টেমগুলিতে ফাইলগুলি লিঙ্ক করতে চান তবে আপনি কেবল সিমলিংক / সফট লিঙ্কগুলিই ব্যবহার করতে পারেন।

ডিরেক্টরিতে লিঙ্কগুলি: আপনি যদি ডিরেক্টরিগুলি লিঙ্ক করতে চান তবে আপনাকে অবশ্যই সফ্ট লিঙ্কগুলি ব্যবহার করতে হবে, কারণ আপনি কোনও ডিরেক্টরিতে কোনও হার্ড লিঙ্ক তৈরি করতে পারবেন না।

হার্ড লিঙ্ক কখন ব্যবহার করবেন:

স্টোরেজ স্পেস: হার্ড লিঙ্কগুলি তৈরি করার সময় কোনও নতুন আইওনড তৈরি না হওয়ায় স্থানগুলি খুব নগন্য পরিমাণে লাগে। নরম লিঙ্কগুলিতে আমরা এমন একটি ফাইল তৈরি করি যা স্পেস ব্যবহার করে (সাধারণত 4KB, ফাইল সিস্টেমের উপর নির্ভর করে)

পারফরম্যান্স: হার্ড লিঙ্কটি অ্যাক্সেস করার সময় পারফরম্যান্স কিছুটা ভাল হবে কারণ আপনি অন্য কোনও ফাইলের পরিবর্তে সরাসরি ডিস্ক পয়েন্টারে অ্যাক্সেস করছেন। ফাইলের অবস্থান সরিয়ে নেওয়া: আপনি যদি সোর্স ফাইলটিকে একই ফাইলসিস্টেমের অন্য কোনও স্থানে নিয়ে যান তবে হার্ড লিঙ্কটি এখনও কাজ করবে তবে নরম লিঙ্কটি ব্যর্থ হবে।

অপ্রয়োজনীয়তা: আপনি যদি নিজের ডেটার সুরক্ষা নিশ্চিত করতে চান তবে হার্ড লিঙ্কের মতো আপনার হার্ড লিঙ্কটি ব্যবহার করা উচিত, যতক্ষণ না ফাইলের সমস্ত লিঙ্ক মুছে ফেলা হয়, যতক্ষণ না সফ্ট লিঙ্কের পরিবর্তে, আপনি হারাবেন ফাইলের মাস্টার উদাহরণটি মুছে ফেলা হলে ডেটা।


নোট করুন যে পাথনামের আকারের জন্য 64 বাইট পর্যন্ত একটি দ্রুত প্রতীকী লিঙ্ক রয়েছে। এটি এখনও একটি ইনোড নেয়, তবে 4 কেবি ব্লক স্থান ব্যবহার করে না।
সোকোকিত

8

আপনি যখন "ফাইলের নাম" এবং একটি হার্ড লিঙ্কের মধ্যে পার্থক্য সন্ধান করার চেষ্টা করেন তখন বিভ্রান্তি সেট হয়ে যায় কারণ সেখানে কিছুই নেই।

আপনার তৈরি প্রতিটি ফাইলের মধ্যে ডিস্কের ডেটা এবং একটি হার্ড লিঙ্ক থাকে - যা কোনও ডিরেক্টরিতে একটি ফাইলের নাম এবং ডিস্কের ডেটার প্রতি নির্দেশক। গল্পের শেষে. যখন সর্বশেষ (বা কেবল) হার্ড লিঙ্কটি মুছে ফেলা হয়, তখন ওএস জানে যে ডেটার দরকার নেই।

এ থেকে আপনি দেখতে পাবেন যে আসল ডেটা কখনও মুছে ফেলা হয় না, কেবলমাত্র হার্ড লিঙ্কগুলি s এবং যখন এটি ডিস্কে পর্যাপ্ত ভিড় করে, ডেটা অন্য ফাইলের ডেটা দ্বারা ওভাররাইট হয়ে যায়। ততক্ষণে মুছে ফেলা ফাইলটি থেকে ডেটা পুনরুদ্ধার করা যেতে পারে তবে হার্ড লিঙ্ক ছাড়া এটি খুঁজে পাওয়া খুব কঠিন।

সিমলিংকস, যেমন আগে ব্যাখ্যা করা হয়েছে, কেবল আপনাকে "নামের <targetname>একটি ফোল্ডারে একটি ফাইল রয়েছে <targetfolder>" বলে দেবে। তারা কঠোর লিঙ্কে ইঙ্গিত করে। ডেটা কোথায় তা তারা জানে না। শক্ত লিঙ্কটি এটি জানেন।


0

এটা খুবই সাধারণ. ফাইল (এবং ডিরেক্টরি!) ব্লক ডিভাইসে (এইচডিডি বা যাই হোক না কেন) ঠিকানায় জমা থাকে। সাধারণত কোনও ঠিকানায় আপনার একটি নাম ম্যাপ করা থাকে এবং আপনি নিজের ফাইলটি পান। একটি হার্ড লিঙ্কটি একই ঠিকানায় দ্বিতীয়, তৃতীয় ইত্যাদি নাম ম্যাপ করা হয়। পরিবর্তে একটি প্রতীকী লিঙ্কটি প্রতীকটিকে বোঝায় - নাম - এবং তাই দ্বিতীয় নামটি প্রথম নামের সাথে ম্যাপ করা হয়। কার্নেলের সাথে সম্পর্কিত হিসাবে, একবার এটি প্রতীকী লিঙ্ক টার্গেট পড়লে এটি বন্ধ হয়ে যায় এবং ফাইলের নাম হিসাবে লক্ষ্য মানটি দিয়ে শুরুতে ফিরে যায় (কম বা কম) তাই আপেক্ষিক প্রতিলিঙ্কগুলি সম্ভব তবে বন্যার উপকারহীন। স্পষ্টভাবে ইউজারস্পেস কোডে অনুসন্ধান করা ব্যতীত লক্ষ্য নামটি ফাইল সিস্টেমের স্তরের উপরে ব্যবহার করা হয় না।

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