আমি ব্যবহার ln -s
এবং এর মধ্যে পার্থক্য বুঝতে চেষ্টা করছি mount --bind
। প্রাথমিক দৃশ্যে আমি উভয়কে অন্য কোথাও থেকে একটি ডিরেক্টরি অ্যাক্সেস করতে ব্যবহার করতে পারি। কোন পরিস্থিতিতে এই দুজন আলাদা আচরণ করবে?
আমি ব্যবহার ln -s
এবং এর মধ্যে পার্থক্য বুঝতে চেষ্টা করছি mount --bind
। প্রাথমিক দৃশ্যে আমি উভয়কে অন্য কোথাও থেকে একটি ডিরেক্টরি অ্যাক্সেস করতে ব্যবহার করতে পারি। কোন পরিস্থিতিতে এই দুজন আলাদা আচরণ করবে?
উত্তর:
তারা কমপক্ষে দুটি ক্ষেত্রে ভিন্ন আচরণ করবে:
A
এমন কোনও কিছুর ( B
) কিছুতে প্রতীকী লিঙ্কগুলিতেও প্রসারিত হয় যার উপর অন্য কিছু থাকে ( )। লিঙ্কটি B
মূল ( A
) এর পরিবর্তে মাউন্ট লক্ষ্য ( ) এর বিষয়বস্তু প্রদর্শন করবে ।এছাড়াও, আপনি একটি বিদ্যমান ডিরেক্টরি বা ফাইলের উপর একটি ডিরেক্টরি বা ফাইল মাউন্ট করতে পারেন, মূল বিষয়বস্তুগুলি মাস্কিং করুন (মূল বিষয়বস্তুটি অন্য কোনও স্থানে মাউন্ট করা না থাকলে অ্যাক্সেসযোগ্য মূল বিষয়বস্তু রেন্ডারিং)। একটি প্রতীকী লিঙ্কের প্রয়োজন মূলটি সরানো বা মুছতে হবে।
ঠিক আছে, 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
।
ln -s ../../myfile .
। আপনি যদি এটি অন্য ডিরেক্টরিতে নিয়ে যান তবে এটি অন্য কোথাও নির্দেশ করবে কারণ এটি একটি আপেক্ষিক লিঙ্ক। আপনার যদি একটি সাব-ট্রিটি ব্যাকআপ করার প্রয়োজন হয় এবং ব্যাকআপটিতে লিঙ্কগুলি কাজ করে থাকে তবে এটি কার্যকর হতে পারে।
অতিরিক্তভাবে, ln -s পুনরায় বুট থেকে বেঁচে থাকবে; যদিও মাউন্ট - বাইন্ডটি অবিচ্ছিন্ন করার জন্য আপনি / etc / fstab সম্পাদনা না করে না।
অন্যান্য উত্তর ছাড়াও। সিস্টেমটি ডিরেক্টরিটিতে হার্ড লিঙ্কটিকে অনুমতি দেয় না:
# 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)
সুতরাং, মাউন্টটি এখনও পঠিত এবং লিখতে পারা যায় এমনকি আমি অপশনটি রো (কেবল পঠনযোগ্য) জন্য জিজ্ঞাসা করি।
rm -r
একটি উপরmount --bind
। একটি দিয়েln
এটি লিঙ্কটি সরিয়ে দেয়, অন্যদিকে--bind
এটিরrm -r
জন্য লক্ষ্যটিতে চালানোর মতো প্রভাব রয়েছে । ভাল নয়, যেমন আমি আমার সার্ভারগুলির একটি পুনর্নির্মাণের অল্প সময়ের আগে পেয়েছি ...