একটি ফাইল হ'ল মেটা ডেটা সহ একটি ইনোড যার মধ্যে পয়েন্টারগুলির একটি তালিকা কোথায় ডেটা সন্ধান করতে পারে।
অর্ডার একটি ফাইল অ্যাক্সেস করতে সক্ষম হবেন জন্য, আপনাকে করতে হবে প্রতি সংযোগ আছে একটি ডিরেক্টরিতে এটা, একটি সংযুক্ত করতে একাধিক ডিরেক্টরি এক এক বা একাধিক এন্ট্রি যোগ (ফোন ডিরেক্টরি, না ফোল্ডার যেমন ডিরেক্টরি মনে) নাম যে ফাইল সঙ্গে।
এই লিঙ্কগুলি, সেই ফাইলগুলির নাম একই ফাইলটিতে নির্দেশ করে। আসলটি এবং লিংকগুলির মধ্যে একটিও নেই। তারা ডিরেক্টরি ট্রিতে একই ফাইলে (একই ইনোড) সমস্ত অ্যাক্সেস পয়েন্ট। আপনি যখন ফাইলটির আকার ( lstat
সিস্টেম কল) পান, আপনি ইনোডে সঞ্চিত তথ্য (উপরে যে মেটাডেটা উল্লেখ করেছেন) পুনরুদ্ধার করছেন, কোন ফাইলের নাম, আপনি কোন লিঙ্কটি সেই ফাইলটি উল্লেখ করার জন্য তা বিবেচনা করে না ।
বিপরীতে Symlinks হ'ল অন্য ফাইল (অন্য একটি ইনোড) যার বিষয়বস্তু লক্ষ্য ফাইলে যাওয়ার পথ । অন্য যে কোনও ফাইলের মতো, সেগুলিকেও একটি ডিরেক্টরিতে লিঙ্ক করতে হবে (অবশ্যই একটি নাম থাকতে হবে) যাতে আপনি সেগুলি অ্যাক্সেস করতে পারেন। আপনার একটি সিমলিংকের বেশ কয়েকটি লিঙ্ক থাকতে পারে, বা অন্য কথায়, সিমলিংকগুলিকে বেশ কয়েকটি নাম দেওয়া যেতে পারে (এক বা একাধিক ডিরেক্টরিতে)।
$ touch a
$ ln a b
$ ln -s a c
$ ln c d
$ ls -li [a-d]
10486707 -rw-r--r-- 2 stephane stephane 0 Aug 27 17:05 a
10486707 -rw-r--r-- 2 stephane stephane 0 Aug 27 17:05 b
10502404 lrwxrwxrwx 2 stephane stephane 1 Aug 27 17:05 c -> a
10502404 lrwxrwxrwx 2 stephane stephane 1 Aug 27 17:05 d -> a
ফাইল নম্বরটির উপরে 10486707 একটি নিয়মিত ফাইল। বর্তমান ডিরেক্টরিতে দুটি এন্ট্রি (নামের a
সাথে একটি, নামের সাথে একটি b
) এর সাথে লিঙ্ক রয়েছে। লিঙ্কের গণনা 2 হওয়ায় আমরা জানি যে বর্তমান ডিরেক্টরি বা অন্য কোনও ডিরেক্টরিতে সেই ফাইলটির অন্য কোনও নাম নেই। ফাইল নম্বর 10502404 হ'ল আরেকটি ফাইল, টাইপ সিমলিংকের বর্তমান সময়ের সাথে দুবার লিঙ্ক হয়েছে linked এর সামগ্রী (লক্ষ্য) আপেক্ষিক পথ "এ"।
নোট করুন যে যদি 10502404 বর্তমানের তুলনায় অন্য ডিরেক্টরিতে লিঙ্ক করা থাকে তবে এটি সাধারণত এটি কীভাবে অ্যাক্সেস করা হয়েছিল তার উপর নির্ভর করে একটি আলাদা ফাইলের দিকে নির্দেশ করবে।
$ mkdir 1 2
$ echo foo > 1/a
$ echo bar > 2/a
$ ln -s a 1/b
$ ln 1/b 2/b
$ ls -lia 1 2
1:
total 92
10608644 drwxr-xr-x 2 stephane stephane 4096 Aug 27 17:26 ./
10485761 drwxrwxr-x 443 stephane stephane 81920 Aug 27 17:26 ../
10504186 -rw-r--r-- 1 stephane stephane 4 Aug 27 17:24 a
10539259 lrwxrwxrwx 2 stephane stephane 1 Aug 27 17:26 b -> a
2:
total 92
10608674 drwxr-xr-x 2 stephane stephane 4096 Aug 27 17:26 ./
10485761 drwxrwxr-x 443 stephane stephane 81920 Aug 27 17:26 ../
10539044 -rw-r--r-- 1 stephane stephane 4 Aug 27 17:24 a
10539259 lrwxrwxrwx 2 stephane stephane 1 Aug 27 17:26 b -> a
$ cat 1/b
foo
$ cat 2/b
bar
ফাইলগুলির সাথে লিঙ্কযুক্ত ডিরেক্টরিগুলি ছাড়া অন্য কোনও নাম যুক্ত নেই। তাদের নামে নেওয়া স্থানটি সেই ডিরেক্টরিগুলির মধ্যে প্রবেশিকা, এটি ডিরেক্টরিগুলির ফাইল আকার / ডিস্ক ব্যবহারের জন্য গণ্য হয়।
আপনি লক্ষ্য করবেন যে কোনও ফাইল সরানোর জন্য সিস্টেম কল unlink
। অর্থাৎ, আপনি ফাইলগুলি সরাবেন না, আপনি যে ডিরেক্টরিগুলি উল্লেখ করেছেন সেগুলি থেকে তাদের লিঙ্কমুক্ত করে দিন a খোলা)।
lstat
সিস্টেম কলের জন্য গণনা করে না যা তাদের আকার পায়।