কোনও ফোল্ডারের জন্য তৈরি করা বিশেষ হার্ডলিঙ্ক "।" আনলিংক (অপসারণ) কীভাবে করবেন?


29

লিনাক্সে, আপনি যখন একটি ফোল্ডার তৈরি করেন, এটি স্বয়ংক্রিয়ভাবে সংশ্লিষ্ট ইনোডের দুটি শক্ত লিঙ্ক তৈরি করে । আপনি যে ফোল্ডারটি তৈরি করতে বলেছিলেন তা হ'ল অন্যটি .এই ফোল্ডারটির বিশেষ ফোল্ডার।

উদাহরণ:

$ mkdir folder
$ ls -li
total 0
124596048 drwxr-xr-x    2 fantattitude  staff    68 18 oct 16:52 folder
$ ls -lai folder
total 0
124596048 drwxr-xr-x  2 fantattitude  staff   68 18 oct 16:52 .
124593716 drwxr-xr-x  3 fantattitude  staff  102 18 oct 16:52 ..

যেমন আপনি দেখতে পাচ্ছেন, উভয় folderএবং .এর ভিতরে উভয়েরই folderএকই ইনোড নম্বর রয়েছে ( -iবিকল্পের সাথে দেখানো হয়েছে )।

এই বিশেষ .হার্ডলিঙ্কটি মুছার জন্য কি এখনও আছে?

এটি কেবল পরীক্ষা এবং কৌতূহলের জন্য। এছাড়াও আমি অনুমান করি উত্তরটি ..বিশেষ ফাইলটিতেও প্রয়োগ হতে পারে ।

আমি rmমানুষের দিকে নজর দেওয়ার চেষ্টা করেছি কিন্তু এটি করার কোনও উপায় খুঁজে পাইনি। আমি যখন যা পাই .সবগুলি সরিয়ে দেওয়ার চেষ্টা করি:

আরএম: "।" এবং ".." অপসারণ করা যাবে না

এই বিষয়গুলি পুরোপুরি কার্যকর করার বিষয়ে আমি সত্যিই আগ্রহী তাই বিষয়টিতে খুব ভার্বোস হওয়া থেকে বিরত থাকবেন না।

সম্পাদনা: সম্ভবত আমি আমার পোস্টটি সম্পর্কে পরিষ্কার ছিলাম না, তবে আমি অন্তর্নিহিত প্রক্রিয়াটি বুঝতে চাই যা .ফাইলগুলির জন্য দায়ী এবং সেগুলি মুছতে পারে না তার কারণগুলি।

আমি জানি যে পসিএক্স স্ট্যান্ডার্ড 2 টিরও কম হার্ডলিংক সহ একটি ফোল্ডারটি নিষ্ক্রিয় করে, তবে সত্যিই কেন আসে না। এটি যেভাবেই করা সম্ভব ছিল কিনা তা আমি জানতে চাই।



@ স্টেফেনকিট দয়া করে আমার সম্পাদনা দেখুন।
অনুগ্রহপূর্বক

1
আমি আমার ভোট প্রত্যাহার করেছি, আসুন দেখুন কীভাবে ভোট কার্যকর হচ্ছে ...
স্টিফেন কিট

2
দুটোই আপেক্ষিক পথের জন্য প্রয়োজন। আপনি কেন এগুলি (সরল কৌতূহল ব্যতীত) অপসারণ করতে চান?
হালোসঘস্ট

@ হ্যালসগোস্ট আমি সিস্টেমের সীমাবদ্ধতাগুলি এবং কীভাবে এবং কেন এইভাবে ডিজাইন করা হয়েছিল তা খতিয়ে দেখছি খুব কৌতূহলী হয়ে উঠছি।
অনুগ্রহপূর্বক

উত্তর:


46

.অন্তত EXT4 ফাইল সিস্টেমে মুছে ফেলা প্রযুক্তিগতভাবে সম্ভব is আপনি যদি একটি ফাইল সিস্টেম চিত্র তৈরি করেন test.img, এটি মাউন্ট করুন এবং একটি testফোল্ডার তৈরি করেন , তবে এটি আবার আনমাউন্ট করুন, আপনি এটি ব্যবহার করে এটি সম্পাদনা করতে পারেন debugfs:

debugfs -w test.img
cd test
unlink .

debugfs.ফাইল সিস্টেমের ডিরেক্টরি এন্ট্রিটি অভিযোগ করে না এবং কর্তব্যরূপে ডিলিট করে । testডিরেক্টরি এখনও উপভোগ্য, এক অবাক হয়ে:

sudo mount test.img /mnt/temp
cd /mnt/temp/test
ls

শুধুমাত্র দেখায়

..

তাই .সত্যিই চলে গেছে। তা সত্ত্বেও cd ., ls ., pwdএখনও স্বাভাবিক হিসাবে আচরণ!

আমি পূর্বে এই পরীক্ষাটি ব্যবহার করা চাই rmdir ., কিন্তু যে (ডিরেক্টরি এর inode মুছে ফেলে বিশাল ধন্যবাদ BowlOfRed জন্য এই ইশারা , যা ছেড়ে) testএকটি আনত ডিরেক্টরির এন্ট্রি এবং সম্মুখীন সমস্যার জন্য বাস্তব কারণ নেই। এই পরিস্থিতিতে, testফোল্ডারটি তখন অকেজো হয়ে যায়; চিত্রটি মাউন্ট করার পরে, চলমান lsউত্পাদন করে

ls: cannot access '/mnt/test': Structure needs cleaning

এবং কার্নেল লগ প্রদর্শন করে

EXT4-fs error (device loop2): ext4_lookup:1606: inode #2: comm ls: deleted inode referenced: 38913

e2fsckইমেজে এই পরিস্থিতিতে চালনা testডিরেক্টরি পুরোপুরি মুছে দেয় (ডিরেক্টরি ইনোড চলে গেছে তাই পুনরুদ্ধার করার মতো কিছুই নেই)।

এটি সমস্ত প্রদর্শন করে যা .EXT4 ফাইল সিস্টেমে একটি নির্দিষ্ট সত্তা হিসাবে বিদ্যমান। কার্নেলের ফাইল সিস্টেম কোড থেকে আমি এটির ধারণা পেয়েছি যা এটি প্রত্যাশা করে .এবং ..বিদ্যমান থাকবে এবং তারা সতর্ক করে দেয় (যদি তারা না দেখায় namei.c) তবে unlink .ভিত্তিক পরীক্ষা দিয়ে আমি সেই সতর্কতাটি দেখতে পাই নি। e2fsckঅনুপস্থিত .ডিরেক্টরি এন্ট্রি পছন্দ করে না এবং এটি ঠিক করার প্রস্তাব দেয়:

$ /sbin/e2fsck -f test.img
e2fsck 1.43.3 (04-Sep-2016)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Missing '.' in directory inode 30721.
Fix<y>?

এটি .ডিরেক্টরি এন্ট্রি পুনরায় তৈরি করে ।


অনেক আগ্রহব্যাঞ্জক! ধন্যবাদ! সুতরাং .ফোল্ডারটি সত্যিই FS এর ভিতরে বিদ্যমান এবং সরঞ্জামগুলি এটি সঠিকভাবে কাজ করার প্রত্যাশা করে।

সত্যিই আপনার খুব সুন্দর, আমি নিজেকে লিনাক্স এবং এর এফএসকে এ জাতীয়
ইনফস

3
আপনি কি "rmdir" পরিবর্তন করতে চেষ্টা করতে পারেন (যা আসলে ইনোডটি সরিয়ে দেয়) "লিঙ্কমুক্ত" করতে (যা কেবল ডিরেক্টরি প্রবেশিকা সরিয়ে দেয়) to এটা একটা বেশিরভাগই ক্রিয়াশীল ডিরেক্টরি (কোন ত্রুটি ছেড়ে মনে হচ্ছে mountবা ls)। অন্যান্য সমস্যা দেখা দেয় কিনা তা আমি দেখিনি।
বাউলওফ্রেড

@ বাওলফ্রেড আপনাকে অনেক ধন্যবাদ, এটি একটি খুব ভাল বিষয় - তাই আমার rmdir .আসলে এটি ধ্বংস করে দেওয়া হয়েছিল testএবং সেই ঝুঁকিপূর্ণ ডিরেক্টরিতে প্রবেশের বিষয়টি রেখে যাচ্ছি, যা আপনি সমস্যার কারণ হতে পারে বলে আশা করছেন। আমি unlinkআমার উত্তরটি যাচাই করে আপডেট করব!
স্টিফেন কিট

1
@ গিয়াকোমো কেটেনাজি সরাসরি নয়, অনুমতি এবং মালিকানা ইনোডে সঞ্চয় করা হয়, ডিরেক্টরি এন্ট্রি নয়।
স্টিফেন কিট

5

এই ডিরেক্টরি এন্ট্রি সরানোর কোন উপায় নেই। .এন্ট্রি মানে হলো "এই ডিরেক্টরির", ..এন্ট্রি মানে হলো "এই ডিরেক্টরির এর পেরেন্ট ডাইরেক্টরি"। এগুলি আসলে হার্ড লিঙ্ক নয়, ঠিক এভাবেই ডিরেক্টরি কাঠামোটি তৈরি / উপস্থাপিত হয়।


আমি সে সম্পর্কে জানি, আমি সম্ভবত কৌতূহলী যদি এটি সম্ভব হয় যেহেতু তারা হার্ডলিঙ্ক বলে মনে হয়। যদি তা না হয় তবে তারা কেন ইনডের হার্ড লিঙ্ক কাউন্টে যোগ করবে?
অনুগ্রহপূর্বক

3
> এগুলি আসলে হার্ড লিঙ্ক নয়, ঠিক এভাবেই ডিরেক্টরি কাঠামোটি তৈরি / উপস্থাপিত হয়। এছাড়াও, সদৃশ। unix.stackexchange.com/questions/289385/…
Xalorous

@ ক্যালরাস এবং তাই এই বিশেষ ফাইলগুলি ঠিক কী উপস্থাপন করে, যদি তারা হার্ডলিঙ্ক না হয় তবে সেগুলি কী? এগুলির উপস্থিতি তাই তাদের অবশ্যই অন্য কোথাও থাকতে হবে, যদি তারা কেবল নিজেরাই lsবা অন্য সরঞ্জামগুলি স্বয়ংক্রিয়ভাবে প্রদর্শিত হয় যা আমার কাছে বাস্তবসম্মত বলে মনে হয় না except
15-18

@ অনুগ্রহ তারা কীভাবে ফোল্ডারটি POSIX প্রয়োজনীয়তা বাস্তবায়নের জন্য নিজেকে উপস্থাপন করে যাতে rmdir পিডব্লিউডি অপসারণ করতে সক্ষম হয় না।
Xalorous

1
Traditionalতিহ্যবাহী ইউনিক্স ফাইল সিস্টেমে এগুলি আসল হার্ড লিঙ্ক। এগুলি ড্রাইভারের দ্বারা অন্য ফাইল সিস্টেমের জন্য ফ্লাইতে সংশ্লেষিত হয়।
বর্মার

2

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


0

হিসাবে পোস্টের উত্তরের 'সম্ভাব্য সদৃশ'-তে বলা হয়েছে, পসিক্স স্ট্যান্ডার্ড নির্দিষ্ট করে যে rmdir যদি বর্তমান ডিরেক্টরিটি সরিয়ে ফেলার চেষ্টা করে তবে এটি ব্যর্থ হবে।

আপনি যা কিছু তৈরি করেন তার সাথে আপনার একটি ভিত্তি থাকতে হবে। 'এখানে' বলার উপায় ছাড়াই আপেক্ষিক পথগুলি সংজ্ঞায়িত করা শক্ত। তাহলে '.' 'এখানে' হিসাবে সংজ্ঞায়িত করা হয়।

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

টিএল; ডিআর - 'ডট' ওএসের সংজ্ঞায় রয়েছে।


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