निर्देशिका संरचना बनाम फ़ाइल सिस्टम


10

निर्देशिका संरचना और फ़ाइल सिस्टम के बीच अंतर क्या है ?
यूनिक्स / लिनक्स निर्देशिका और फाइल सिस्टम निम्नानुसार है:

निम्नलिखित दो निर्देशिकाएं स्पष्ट रूप से हम निर्देशिकाओं को जानती हैं।

  /home/abc/xyzdir1 --is a directory
  /home/abc/xyzdir2 -- is a directory

निम्नलिखित तीन नमूने फाइल सिस्टम कह रहे हैं।

/proc -- is a file system
/ -- is a file system
/bin -- is a file system

मैं यह कैसे पहचान सकता हूं कि उपरोक्त कोड स्निपेट में से कौन एक फ़ाइल सिस्टम और एक निर्देशिका है?


एक फाइलसिस्टम में एक या अधिक निर्देशिकाएं होती हैं। हर निर्देशिका (सहित एक फाइल सिस्टम का हिस्सा है /proc, /और /bin, तो मैं स्पष्ट नहीं कर रहा हूँ कि कैसे आप "अंतर" की पहचान करना चाहते अपने उदाहरण से)।
रोएमा

@roaima कृपया नमूना के लिए कोड स्निपेट
पाएं

आपका प्रश्न अभी भी अस्पष्ट है। /proc, /और /binनिर्देशिका हैं। वे "फाइलसिस्टम" नहीं हैं। क्या आप शायद यह जानना चाहते हैं कि कौन सी निर्देशिकाएँ उनके फाइल सिस्टम का आरोह बिंदु (रूट) हैं?
रोएमा

जवाबों:


8

लोग फ़ाइल सिस्टम का उपयोग बहुत सावधानी से नहीं करते हैं । आपके उदाहरणों में, मैं कहूंगा कि /, /binऔर /procफ़ाइल सिस्टम हैं क्योंकि एक संपूर्ण विभाजन (जैसे /dev/sdb1) उन निर्देशिकाओं पर आरूढ़ है। मेरे Arch linux सिस्टम /binमें फ़ाइल सिस्टम नहीं है इसलिए यह उदाहरण पूर्ण नहीं है लेकिन ...

% ls -lid /proc /home /boot /
2 drwxr-xr-x  17 root root 4096 Feb 24 12:12 //
2 drwxr-xr-x   4 root root 4096 May 16 14:29 /boot/
2 drwxr-xr-x   5 root root 4096 Mar 14 18:11 /home/
1 dr-xr-xr-x 116 root root    0 May 16 17:18 /proc/

इनोड संख्या 2 पारंपरिक रूप से एक संपूर्ण ऑन-डिस्क फ़ाइल सिस्टम का "रूट" इनोड है (जो कि वाक्यांश का अन्य उपयोग है)। /, /bootऔर /homeसभी के पास इनकोड नंबर 2 है, जबकि /proc, जो पूरी तरह से कर्नेल द्वारा प्रस्तुत किया गया है और जिसमें ऑन-डिस्क उपस्थिति नहीं है, इनोड 1 है। उन इनोड संख्याओं से संकेत मिलता है कि एक संपूर्ण, ऑन-डिस्क फ़ाइल सिस्टम, या वर्चुअल फ़ाइल सिस्टम उस नाम का उपयोग करके माउंट किया गया है।

वाक्य ' /home/abc/xyzdir1एक निर्देशिका है "मूल रूप से इसका मतलब है कि उस नाम का उपयोग करके कोई ऑन-डिस्क फ़ाइल सिस्टम माउंट नहीं किया गया है। यदि आप ls -lidएक निर्देशिका पर एक ही कमांड करते हैं, तो आपको कुछ ऐसा मिलता है:

 % ls -lid /home/bediger/src
3670039 drwxr-xr-x 29 bediger bediger 4096 May 17 19:57 /home/bediger/src/

इनकोड संख्या 3670039 ऑन-डिस्क फ़ाइल सिस्टम (मेरी मशीन पर) माउंटेड फ़ाइल सिस्टम से आवंटित की गई जो कुछ भी है /home

आप mountकमांड को लागू करके फाइल सिस्टम भी पा सकते हैं । यह सभी माउंटेड फ़ाइल सिस्टम को सूचीबद्ध करता है और जहां वे माउंट किए जाते हैं।


"मैजिक इनोड" संख्या फ़ाइलसिस्टम की ext2 श्रृंखला के लिए विशिष्ट है। यह अधिकांश (सभी?) दूसरों पर लागू नहीं होता है, जैसे कि एक्सएफ़एस या बीट्रॉफ़।
Psusi

मैं कहूंगा कि /, /binऔर /procफ़ाइल सिस्टम हैं क्योंकि एक संपूर्ण विभाजन ... उन निर्देशिकाओं पर आरूढ़ है। यह सच नहीं है /proc, क्योंकि उत्तर बाद में निकलता है।
मैक्स नानसी

1
@MaxNanasy - यह दिया कि "फाइल सिस्टम" के दो अर्थ सामान्य उपयोग में हैं (1. एक पेड़ की संरचना में निर्देशिकाओं के नाम और व्यवस्था, और 2. फ़ाइल और निर्देशिका संरचित डेटा का ऑन-डिस्क प्रारूप और लेआउट, साथ में इसे बनाए रखने और इसका उपयोग करने के लिए कोड), यह एक शब्द के साथ आने के लिए बहुत कठिन है जो दोनों समझ में नहीं आता है, एक परिपत्र फैशन में परिभाषित नहीं है, और तकनीकी रूप से सही है। मैंने अन्य शर्तों के बजाय समझदार और "विभाजन" का उपयोग करने के लिए चुना। मैं आपको टर्म (एस) का सुझाव देने के लिए आमंत्रित करता हूं जो अधिक सही हैं, मैं नुकसान में हूं।
ब्रूस एडिगर

4

मोटे तौर पर ओवरसिप्लाईज़िंग के जोखिम पर,

  • एक फाइलसिस्टम आपकी कार के इंजन और अन्य आंतरिक प्रणालियों की तरह है,
  • एक निर्देशिका संरचना उन स्थानों के नक्शे की तरह होती है जहाँ आप ड्राइव करते हैं।

जब से मुझे एक एनकोर के लिए कहा गया है,

  • फाइलसिस्टम ऑडियो / वीडियो सिग्नल वितरण / प्रचार के यांत्रिकी (कार्यान्वयन विवरण) की तरह हैं: एनालॉग आरएफ प्रसारण, डिजिटल आरएफ प्रसारण, केबल, इंटरनेट, वीडियो टेप, वीडियो डिस्क, आदि।
  • निर्देशिका संरचना टेलीविजन प्रोग्रामिंग की सामग्री की तरह है, और इसके वर्गीकरण, जैसे, कॉमेडी, ड्रामा, समाचार, वृत्तचित्र, गेम शो, खेल आदि।

यदि आप कोड चाहते हैं, तो इस उत्तर का पहला भाग देखें कि कैसे निर्धारित किया जाए कि लिनक्स फाइलसिस्टम एक रनिंग सिस्टम से संबंधित है - वह हिस्सा जो सत्यापन जांच करता है root_dir। यह वही कर रहा है जो ब्रूस ने कहा था; यह सत्यापित करते हुए कि यह एक निर्देशिका है और जाँच रहा है कि इसका इनोड नंबर 1 या 2 है।


1
अच्छा ELI5, लेकिन क्या आप एक कोड स्निपेट का उत्तर दे सकते हैं कि मैं कैसे पहचान सकता हूं कि कौन सी फाइल सिस्टम और एक निर्देशिका है?
user1717828

4

जिस तरह से मैं इसे देखता हूं, एक फाइल सिस्टम, UNIX अर्थ में, एक निर्देशिका ट्री (डायरेक्टरी स्ट्रक्चर) को लागू करने का एक तरीका है, या अधिक सटीक रूप से, UNIX फाइलसिस्टम एपीआई को लागू करने का एक तरीका है। रूट फ़ाइल सिस्टम एक विशेष कार्यान्वयन द्वारा समर्थित है, और जब भी आप एक माउंटपॉइंट निर्देशिका में प्रवेश करते हैं, तो आप एक उपप्रकार दर्ज करते हैं जो कुछ अलग से समर्थित है।

इंटरफ़ेस हमेशा समान होता है, लेकिन एक मामले में, आपके पास एक विशेष डिस्क विभाजन होता है पीछे के छोर पर, एक अन्य मामले में, एक ऐसा कार्यक्रम होगा जो कभी भी स्टोरेज डिवाइस पर नहीं लिखता है। procफाइल सिस्टम सॉफ्टवेयर है कि उजागर गिरी internals के द्वारा समर्थित किया जाएगा; a tmpfsसॉफ्टवेयर द्वारा समर्थित होगा जो RAM को लिखता है, और अन्य फाइल सिस्टम नेटवर्क या अन्य जगहों पर लिख सकता है।

शब्द के गैर-UNIXy अर्थ में, एक फ़ाइल सिस्टम डेटा संग्रहण को व्यवस्थित करने का एक तरीका है। ext4, btrfs, fat, और ntfsइस अर्थ में फाइल सिस्टम, लेकिन यह भी में हैं Unixy भावना-वे फाइल सिस्टम API के कार्यान्वयन। procइसके भीतर एक फाइलसिस्टम के रूप में वर्गीकृत नहीं किया जाएगा, अधिक सीमित, प्रतिमान क्योंकि यह डेटा भंडारण को व्यवस्थित नहीं करता है।

टी एल; डॉ:

  • निर्देशिका संरचना / वृक्ष = सामने का छोर
  • फ़ाइल सिस्टम = बैक एंड

2

जबकि फ़ाइल सिस्टम के बारे में बात करते समय डायरेक्टरी एसिमिटेशन अस्पष्ट है, फ़ाइल सिस्टम का मतलब यह हो सकता है कि आप जिस चीज़ के बारे में बात कर रहे हैं उसके आधार पर अलग-अलग चीज़ें हों।

आपके उदाहरणों में, सभी सूचीबद्ध पथ निर्देशिकाएं हैं, लेकिन उनमें से केवल कुछ ही फाइल सिस्टम के आरोह बिंदु हैं।

आप dfकमांड का उपयोग कर सकते हैं कि किसी फाइल या निर्देशिका को किस फाइल सिस्टम में जाना जाता है, और mountयह जानने के लिए कि आपके मशीन, उनके प्रकार और उनके आरोह बिंदुओं पर कौन से फाइल सिस्टम मौजूद हैं, यह पता लगाने के लिए अधिकांश यूनिक्स और लिनक्स कार्यान्वयन पर कमांड है। उदाहरण के लिए:

$ df /proc
Filesystem     1K-blocks  Used Available Use% Mounted on
proc                   0     0         0    - /proc
$ mount | grep -w /proc
/proc is a file system of type proc

बयान /binएक फाइल सिस्टम संदिग्ध है, /binलगभग हमेशा घुड़सवार होता है /

$ df -k /bin
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda5      206292664 180687360  15103212  93% /
$ mount | grep -w /
/dev/sda5 on / type ext4 (rw,errors=remount-ro)

1

पहले एक फाइलसिस्टम और एक निर्देशिका के बारे में अपनी धारणा में सुधार। एक फाइलसिस्टम में एक या अधिक निर्देशिकाएं होती हैं। अपने उदाहरणों का उपयोग करना /proc, /और /binनिर्देशिकाएं हैं। वे अपने आप में "फाइलसिस्टम" नहीं हैं, लेकिन वे अपने संबंधित फाइल सिस्टम के मूल हो सकते हैं।

यदि आप पहचानना चाहते हैं कि कौन सी निर्देशिकाएँ उनके फाइल सिस्टम का आरोह बिंदु (रूट) हैं तो आप कुछ इस तरह से उपयोग कर सकते हैं:

F="$PWD"    # The directory to be tested
if test -d "$F"
then
    echo "$F is a directory"
    test "X$(stat --format '%m' "$F")" = "X$PWD" && echo "$F is a mountpoint"
fi

1

फ़ाइल सिस्टम तार्किक रूप से बड़ी मात्रा में डेटा को व्यवस्थित और संग्रहीत करने के लिए एक पद्धति है, ताकि सिस्टम को प्रबंधित करना आसान हो। एक फाइल सिस्टम में प्रत्येक फाइल के लिए फाइल, रिलेशनशिप के साथ-साथ अन्य फाइल के गुण (फाइल टाइप, फाइल नेम, फाइल साइज, फाइल ओनर, फाइल टाइमस्टैम्प) होते हैं।

निर्देशिकाएँ : उदाहरण के लिए, यूनिक्स फाइल सिस्टम अनिवार्य रूप से फाइलों और निर्देशिकाओं से बना है। निर्देशिकाएँ विशेष फाइलें हैं जिनमें अन्य फाइलें हो सकती हैं। शीर्ष-सबसे निर्देशिका है /(स्लैश), निर्देशिकाओं के साथ सीधे सिस्टम निर्देशिकाओं के नीचे। यहाँ छवि विवरण दर्ज करें

/ लिनक्स फाइलसिस्टम की जड़

/bin बाइनरी निष्पादन योग्य फाइलें यहां रखी गई हैं

/boot बूटिंग से जुड़ी फाइलें यहां रखी गई हैं

/dev डिवाइस की फाइलें यहां रखी गई हैं

/etc सिस्टम-वाइड कॉन्फ़िगरेशन फ़ाइलें यहां रखी गई हैं

/home नियमित उपयोगकर्ताओं के घर निर्देशिकाओं के लिए स्थान

/lib64 बाइनरी निष्पादन के लिए पुस्तकालय यहां रखे गए हैं

/mnt डीवीडी-रोम, यूएसबी फ्लैश ड्राइव के लिए अस्थायी माउंट प्वाइंट।

/optवैकल्पिक प्रोग्राम यहां विंडोज में प्रोग्राम फाइल्स की तरह इंस्टॉल किए जाते हैं

/proc कर्नेल छद्म फाइलसिस्टम

/root सुपर यूजर रूट की होम डायरेक्टरी

/sbin सिस्टम बाइनरी निष्पादन योग्य फ़ाइलें यहां रखी गई हैं

/tmp अस्थायी फाइलें यहां रखी गई हैं

/usr उपयोगकर्ता फ़ाइल सिस्टम

/var परिवर्तनीय फाइलें यहां रखी गई हैं

/srv एक सेवा फ़ोल्डर है, जिसमें साइट-विशिष्ट डेटा होता है जो इस प्रणाली द्वारा दिया जाता है।

src और अधिक के लिए

निम्नलिखित दो निर्देशिकाएं उपयोगकर्ता परिभाषित निर्देशिकाएं हैं:

 /home/abc/xyzdir1 --is a directory
 /home/abc/xyzdir2 -- is a directory

यह आरेख बहुत पुरानी है। एफएचएस 3.0 जून 2015 में जारी किया गया था। यह भी ध्यान दिया जाना चाहिए कि एफएचएस केवल लिनक्स वितरण पर लागू होता है।
fpmurphy

1

यदि आपको केवल एक कमांड की आवश्यकता है जो आपको बताता है कि क्या पथ एक निर्देशिका है या माउंटपॉइंट (1) का उपयोग नहीं करता है ।

मेरे लिए यह प्रिंट करता है

$ mountpoint /
/ is a mountpoint
$ mountpoint /bin
/bin is not a mountpoint
$ mountpoint some-file
some-file is not a mountpoint

अच्छी बात यह है कि बाहर निकलने की स्थिति फिर से उसी तरह इंगित करती है ताकि आप इसे अपनी स्क्रिप्ट में इस तरह से उपयोग कर सकें:

if mountpoint "$foo" >/dev/null; then
  : do mountpoint stuff
elif [ -d "$foo" ]; then
  : do directory stuff
elif [ -e "$foo" ]; then
  : do file stuff 
else
  echo "$foo does not exist!" >/2
fi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.