Ln -s এবং মাউন্ট - বাইন্ডের মধ্যে পার্থক্য কী?


36

আমি ব্যবহার ln -sএবং এর মধ্যে পার্থক্য বুঝতে চেষ্টা করছি mount --bind। প্রাথমিক দৃশ্যে আমি উভয়কে অন্য কোথাও থেকে একটি ডিরেক্টরি অ্যাক্সেস করতে ব্যবহার করতে পারি। কোন পরিস্থিতিতে এই দুজন আলাদা আচরণ করবে?


7
আমার বিরুদ্ধে সতর্ক করা উচিত rm -rএকটি উপর mount --bind। একটি দিয়ে lnএটি লিঙ্কটি সরিয়ে দেয়, অন্যদিকে --bindএটির rm -rজন্য লক্ষ্যটিতে চালানোর মতো প্রভাব রয়েছে । ভাল নয়, যেমন আমি আমার সার্ভারগুলির একটি পুনর্নির্মাণের অল্প সময়ের আগে পেয়েছি ...
মার্ক কে কোয়ান

@ মারককোয়ান এটি সত্য, যদি না আপনি একটি হার্ড লিঙ্ক তৈরি করেন
জননিকিউ

@ জোহনিকিউ ডিরেক্টরিগুলি হার্ডলিঙ্ক করতে পারে না
মার্ক কে কোয়ান

উত্তর:


33

তারা কমপক্ষে দুটি ক্ষেত্রে ভিন্ন আচরণ করবে:

  • একটি ক্রুটে লিঙ্ক লক্ষ্যটি যদি ক্রুটের বাইরে থাকে তবে লিঙ্কটি মারা যাবে। একটি বাইন্ড মাউন্ট এখনও অ্যাক্সেসযোগ্য হবে।
  • বেশ কয়েকটি প্রোগ্রাম প্রতীকী লিঙ্ক এবং প্রকৃত ডিরেক্টরি বা ফাইলগুলির মধ্যে পার্থক্য করতে পারে। কয়েকটি (যদি থাকে) ডিরেক্টরি বা ফাইলের মধ্যে পার্থক্য করতে পারে এবং এতে লাগানো একটি। এটি Aএমন কোনও কিছুর ( B) কিছুতে প্রতীকী লিঙ্কগুলিতেও প্রসারিত হয় যার উপর অন্য কিছু থাকে ( )। লিঙ্কটি Bমূল ( A) এর পরিবর্তে মাউন্ট লক্ষ্য ( ) এর বিষয়বস্তু প্রদর্শন করবে ।

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


16

ঠিক আছে, ln -sএকটি প্রতীকী লিঙ্ক mount --bindতৈরি করে , যেখানে একটি মাউন্ট তৈরি করে।

একটি প্রতীকী লিঙ্ক একটি বিশেষ ধরণের ফাইল। যদি আপনি এটি করেন ln -s /var/target /var/linkতবে তারপরে /var/linkএকটি ফাইল থাকবে যাতে এতে " /var/target" পথ থাকবে। একটি প্রতীকী লিঙ্ক এবং একটি সাধারণ ফাইলের মধ্যে একমাত্র পার্থক্য হ'ল কোনও প্রোগ্রাম যখন একটি প্রতীকী লিঙ্কে কোনও ক্রিয়াকলাপ চালানোর চেষ্টা করে, তখন অপারেশনটি সাধারণত ফাইলটির পরিবর্তে লক্ষ্যমাত্রায় সঞ্চালিত হয়। এখন আপনি যদি ls /var/linkএটি করেন তবে lsপ্রোগ্রামটি ডিরেক্টরিতে একটি ডিরেক্টরি তালিকা পাওয়ার চেষ্টা করবে /var/link, তবে বাস্তবে /var/targetপরিবর্তে একটি ডিরেক্টরি তালিকা পাবে ।

যদিও প্রতীকী লিঙ্কগুলি এখনও কেবল ফাইল files এগুলির নাম পরিবর্তন করে মুছে ফেলা যায় এবং সমস্ত জাজ। মনে রাখবেন যে আপনি /var/linkযদি ইতিমধ্যে একটি ফাইল নামে ডেকে থাকেন তবে কল করা একটি প্রতীকী লিঙ্ক (বা একটি সাধারণ ফাইল) তৈরি করতে পারবেন না /var/link; আপনার প্রথমে এ থেকে মুক্তি পাওয়া দরকার।

একটি মাউন্ট একটি ফাইল নয়; এটি একটি রেকর্ড যা কার্নেল স্মৃতিতে রাখে। যদি আপনি এটি করেন mount --bind /var/target /var/mount, কার্নেলটি /var/mountএখন একটি নতুন নামের সত্যটি রেকর্ড করবে /var/target। (আমি বিশদগুলি জানি না; বিশেষত, আমি জানি না যে কোনও উপ-ডিরেক্টরিতে কোনও কিছু মাউন্ট করা /var/targetএটির /var/mountপাশাপাশি প্রদর্শিত হবে, বা কেন বা কেন নয় this এই উত্তরের সম্পাদনাগুলি প্রশংসা করবে) তাই এখন আপনি যদি করেন ls /var/mountতবে একই জিনিসটি ঘটবে যেমন আপনি করেছিলেন ls /var/target, কারণ /var/mountএবং /var/targetএকই ডিরেক্টরি।

মাউন্টগুলি ফাইল নয়। আপনি নাম পরিবর্তন করতে বা মুছতে চেষ্টা করলে কী হবে তা আমি জানি না /var/mount। মনে রাখবেন আপনি কিছু মাউন্ট করতে পারবে না /var/mount যদি না ইতিমধ্যেই এ ডিরেক্টরির এর /var/mount


1
আমি মাউন্ট - বাইন্ড ব্যবহার করিনি, তবে আমার সন্দেহ যে এটি কোনও সিমলিংকের মতো আচরণের প্রতিরূপ তৈরি করতে পারে ln -s ../../myfile .। আপনি যদি এটি অন্য ডিরেক্টরিতে নিয়ে যান তবে এটি অন্য কোথাও নির্দেশ করবে কারণ এটি একটি আপেক্ষিক লিঙ্ক। আপনার যদি একটি সাব-ট্রিটি ব্যাকআপ করার প্রয়োজন হয় এবং ব্যাকআপটিতে লিঙ্কগুলি কাজ করে থাকে তবে এটি কার্যকর হতে পারে।
জো

10

অতিরিক্তভাবে, ln -s পুনরায় বুট থেকে বেঁচে থাকবে; যদিও মাউন্ট - বাইন্ডটি অবিচ্ছিন্ন করার জন্য আপনি / etc / fstab সম্পাদনা না করে না।


2

অন্যান্য উত্তর ছাড়াও। সিস্টেমটি ডিরেক্টরিটিতে হার্ড লিঙ্কটিকে অনুমতি দেয় না:

# ln mydir mpoint
ln: `mydir': hard link not allowed for directory

মাউন্ট আপনাকে কঠোর লিঙ্কের মতো করে তৈরি করতে পারে একই একই ইনোডের জন্য দুটি বা আরও বেশি নাম :

# mount -B mydir/ mpoint/
# ls -d -i *
807175  mpoint/  807175  mydir/

(আরএসসিএনসি-র পুরানো সংস্করণ সহ এটি স্ন্যাপশট-ব্যাকআপের জন্য সাহায্য করতে পারে))

এছাড়াও, নোট করুন যে এই মাউন্টটি সম্পূর্ণ নয়:

# mount -B -oro mydir/ mpoint/
mount: warning: mpoint/ seems to be mounted read-write.
# mount | grep mpoint
/root/learn/mydir on /root/learn/mpoint type none (rw,bind)

সুতরাং, মাউন্টটি এখনও পঠিত এবং লিখতে পারা যায় এমনকি আমি অপশনটি রো (কেবল পঠনযোগ্য) জন্য জিজ্ঞাসা করি।

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