GNU/Linux-এ হার্ডলিঙ্ক মুছে ফেলা এবং আইনোড নিয়ে আলোচনা
নমস্কার, আমি অযোগ্য।
অনেকদিন পর ln কমান্ড দিয়ে লিঙ্ক তৈরি করতে গিয়ে ভুল করে -s অপশনটি মুছে ফেলতে ভুলে গিয়েছিলাম এবং একটি হার্ডলিঙ্ক তৈরি হয়ে গিয়েছিল, তাই অপ্রয়োজনীয় হার্ডলিঙ্কটি মুছে ফেলব।
হার্ডলিঙ্ক তৈরি করা
অপশন ছাড়া ln কমান্ড চালালে একটি হার্ডলিঙ্ক তৈরি হয়।
alleycat:[haturatu]:~/git/hardlink$ ls
alleycat:[haturatu]:~/git/hardlink$ touch hardlink1
alleycat:[haturatu]:~/git/hardlink$ echo "You are an idiot" >> hardlink1
alleycat:[haturatu]:~/git/hardlink$ cat hardlink1
You are an idiot
alleycat:[haturatu]:~/git/hardlink$ ls -la
合計 12
drwxr-xr-x 2 haturatu haturatu 4096 1月 12 15:00 .
drwxr-xr-x 114 haturatu haturatu 4096 1月 12 15:00 ..
-rw-r--r-- 1 haturatu haturatu 17 1月 12 15:01 hardlink1
উপরের মতো করে একটি ফাইল তৈরি করে দেখলাম।
alleycat:[haturatu]:~/git/hardlink$ ln hardlink1 hardlink2
alleycat:[haturatu]:~/git/hardlink$ ls -la
合計 16
drwxr-xr-x 2 haturatu haturatu 4096 1月 12 15:02 .
drwxr-xr-x 114 haturatu haturatu 4096 1月 12 15:00 ..
-rw-r--r-- 2 haturatu haturatu 17 1月 12 15:01 hardlink1
-rw-r--r-- 2 haturatu haturatu 17 1月 12 15:01 hardlink2
এতে একটি হার্ডলিঙ্ক তৈরি হয়েছে।
এবং, নিচের স্ট্যান্ডার্ড আউটপুটটি দেখা যাক।
-rw-r--r-- 2 haturatu haturatu 17 1月 12 15:01 hardlink1
-rw-r--r-- 2 haturatu haturatu 17 1月 12 15:01 hardlink2
এই -rw-r--r-- 2-এর 2 হল হার্ডলিঙ্ক করা ফাইলের সংখ্যা। হার্ডলিঙ্ক করার আগের অবস্থার সাথে তুলনা করলে, আপনি দেখতে পাবেন যে মান বেড়েছে।
এবং, যেহেতু এটি কেবল লিঙ্ক করা হয়েছে, তাই এটি ডিস্কের স্থানকে চাপ দেয় না। এটি একক ডেটা সংরক্ষণ করে, এবং inode নম্বর একই থাকে, যা একই ফাইলকে নির্দেশ করে।
-i অপশন দিয়ে inode নম্বর পরীক্ষা করুন।
alleycat:[haturatu]:~/git/hardlink$ ls -lia
合計 16
13238408 drwxr-xr-x 2 haturatu haturatu 4096 1月 12 15:02 .
11406555 drwxr-xr-x 114 haturatu haturatu 4096 1月 12 15:00 ..
13265123 -rw-r--r-- 2 haturatu haturatu 17 1月 12 15:01 hardlink1
13265123 -rw-r--r-- 2 haturatu haturatu 17 1月 12 15:01 hardlink2
আইনোড কী?
এটি ফাইল সিস্টেমের উপর নির্ভরশীল, তাই উপরেরটি GNU/Linux পরিবেশে এবং BSD-ভিত্তিক ফাইল সিস্টেমে vnode বা ZFS-এ znode ইত্যাদি কিছুটা ভিন্ন হতে পারে, তবে ঐতিহাসিকভাবে এটি মূল UNIX ফাইল সিস্টেমের একটি সম্প্রসারিত রূপ হিসাবে ভাবা যেতে পারে।
এবং, সিম্বলিক লিঙ্কের বিপরীতে, হার্ডলিঙ্কগুলি hardlink1 মুছে ফেললেও hardlink2 থেকে যায়, এবং hardlink2 মুছে ফেললেও hardlink1 থেকে যায়। এই দৃষ্টিকোণ থেকে, এটি ব্যাখ্যা করা যেতে পারে যে ফাইল সিস্টেম নিজেই ফাইলটি পরিচালনা করে, তবে এটি এখনও কিছুটা জটিল।
তবে, এভাবে দেখলে হার্ডলিঙ্ক সুবিধাজনক, কিন্তু সিম্বলিক লিঙ্কগুলি অন্য ডিস্কের ফাইলগুলিও রেফারেন্স করতে পারে, যেখানে হার্ডলিঙ্কগুলি অন্য ডিস্কের অধীনে তৈরি করা যায় না।
পূর্বোক্ত ব্যাখ্যা বিবেচনা করে সহজভাবে বলতে গেলে, ফাইল সিস্টেম একটি একক ডিস্কের inode-এর উপর ভিত্তি করে কাজ করে, তাই অন্য ডিস্কের ক্ষেত্রে এটি সেই ফাইল সিস্টেমের এখতিয়ারের বাইরে থাকে এবং স্তর কাঠামোগতভাবে রেফারেন্স করা যায় না।
অতএব, যদি এটি অন্য ডিস্কে বিদ্যমান থাকে, তবে একটি সিম্বলিক লিঙ্ক তৈরি করার প্রয়োজন হয়।
এবং, ফাইল সিস্টেমের দৃষ্টিকোণ থেকে, এটি ডিস্ক পুনরুদ্ধার এবং রিকভারি কাজের সময় ব্যবহৃত হয়, যেখানে পূর্ববর্তী inode তথ্য থেকে রেফারেন্স করে কোন inode নম্বরের ফাইল তৈরি হয়েছে বা মুছে ফেলা হয়েছে তা শনাক্ত করা হয়।
এখানে একটি ফাঁদ হল, যদি ফাইলটি ওভাররাইট করা হয়, তবে এই inode নম্বরটিও আপডেট হয়ে যায়। অর্থাৎ, ব্যাকআপ স্ক্রিপ্ট তৈরির সময় এমন স্ক্রিপ্ট তৈরি করার বিষয়ে সচেতন থাকতে হবে যাতে ওভাররাইট প্রক্রিয়া না হয়। (আমি একবার এই ভুল করেছিলাম)
একই আইনোড নম্বরের ফাইল শনাক্ত করা
find কমান্ড দিয়ে এটি পরীক্ষা করা যেতে পারে।
alleycat:[haturatu]:~/git/hardlink$ find . -inum 13265123
./hardlink2
./hardlink1
তাহলে, এবার hardlink1 মুছে ফেলি।
alleycat:[haturatu]:~/git/hardlink$ rm -i hardlink1
rm: 通常ファイル 'hardlink1' を削除しますか? y
alleycat:[haturatu]:~/git/hardlink$ ls -lai
合計 12
13238408 drwxr-xr-x 2 haturatu haturatu 4096 1月 12 15:23 .
11406555 drwxr-xr-x 114 haturatu haturatu 4096 1月 12 15:00 ..
13265123 -rw-r--r-- 1 haturatu haturatu 17 1月 12 15:01 hardlink2
alleycat:[haturatu]:~/git/hardlink$ cat hardlink2
You are an idiot
এতে, হার্ডলিঙ্ক করা মানও 1 হয়ে গেছে, এবং এটি নিশ্চিত করা গেছে যে মূলত ln hardlink1 hardlink2 দিয়ে hardlink1-এর লিঙ্ক তৈরি করা হয়েছিল, এবং hardlink1-এর মতো একই তথ্য ধারণকারী hardlink2 বিদ্যমান এবং একই ডেটা রয়েছে।
ব্যবহারিক প্রয়োগে
অনেকদিন পর এটি নিয়ে কাজ করলাম, তবে একই ডিস্কে বড় ফাইল কপি করতে চাইলে এবং ডিস্কের ব্যবহার কমাতে চাইলে হার্ডলিঙ্ক ব্যবহার করা ভালো।
হয়তো এটি এমন কিছু নয় যা খুব সচেতনভাবে ব্যবহার করা হয়, তবে এটি ফাইল সিস্টেমের কাঠামো সম্পর্কে কিছুটা ধারণা দেয়, তাই এটি আকর্ষণীয় হতে পারে।
তাহলে আবার দেখা হবে।
শুভেচ্ছা রইল।