यूनिक्स फाइल सिस्टम संरचना के क्या फायदे हैं


9

यदि मैं लिनक्स में डेबियन / ग्नू लिनक्स के लिए एक एप्लिकेशन इंस्टॉल करता हूं, तो एप्लिकेशन की फाइलें फाइल सिस्टम में कई अलग-अलग निर्देशिकाओं में कॉपी की जाती हैं।

कुछ स्क्रिप्ट्स / usr / share .. / usr / स्थानीय कुछ अन्य फाइलों को / var .. / log .. etc / / इत्यादि में जाती हैं

मेरे लिए यह ठीक है क्योंकि मैंने फ़ाइल सिस्टम के बारे में कुछ सीखा है और अधिकांश निर्देशिकाएं किसी विशिष्ट उद्देश्य के लिए फाइलें रखने के लिए हैं। यह यूनिक्स दर्शन में बहुत अच्छा लगता है "एक काम करो और इसे अच्छे से करो"

लेकिन मेरा सवाल यह है कि ऐसी डायरेक्टरी स्ट्रक्चर के फायदे क्या हैं? या यह केवल पुराने यूनिक्स दिनों की विरासत है। (उदाहरण के लिए एक विंडोज़ के उपयोग की तुलना में, जहाँ एक अनुप्रयोग के लिए सभी फाइलें एक विशिष्ट "फ़ोल्डर" में हैं)

जवाबों:


9

मुझे सबसे आसान फायदा यह लगता है कि इसी तरह की फाइलें एक ही डायरेक्टरी ट्री में रहती हैं। कॉन्फ़िगरेशन फ़ाइलों में रहते हैं /etc, लॉग फ़ाइलों और / या रन-टाइम ट्रेस फ़ाइलों में रहते हैं /var/log, निष्पादन योग्य रहते हैं /usr/bin, पीआईडी ​​फ़ाइलों की तरह रन-टाइम जानकारी में रहते हैं /var/run। आप जानना चाहते हैं कि NTP कॉन्फ़िगरेशन फ़ाइल में क्या है? निर्देशिका को बदलें /etcऔर करें ls ntp*। आप कुछ प्रोग्राम देखना चाहते हैं निष्पादन योग्य फ़ाइलें ताकि कुछ पारंपरिक फ़ाइल सिस्टम वायरस उन्हें संक्रमित न करें? सब कुछ /usr/binऔर /usr/local/binदेखने की जरूरत है।

दूसरा लाभ जो मैं सोच सकता हूं, वह यह है कि संगठन की यूनिक्स शैली डेटा और निष्पादन योग्य के अलगाव को बढ़ावा देती है। Executables एक निर्देशिका में रहते हैं, जहाँ टेम्पलेट रहते हैं (जहाँ /usr/share, शायद), और जहाँ डेटा रहता है, वहाँ से अच्छी तरह से दूर है। यह अलगाव एक कारण हो सकता है कि यूनिक्स / लिनक्स / * बीएसडी में विंडोज वायरस की तुलना में सिस्टम वायरस फाइल करने के लिए अधिक प्रतिरोध है, या पुराने प्री-ओएसएक्स मैक में था।


वह अच्छे अंक हैं। निष्पादन योग्य और डेटा-, टेम्प्लेट, कॉन्फ़िग-फाइल का पृथक्करण वायरस के विरुद्ध अधिक सुरक्षा का कारण क्यों है?
जान कोसेर जनवरी १13

3
दुनिया में वायरस और कीड़े का एक बहुत (लेकिन सभी नहीं) डेटा को निष्पादन योग्य में बदलने की क्षमता के कारण प्रचार करते हैं: स्टैक ओवरफ्लो और एसक्यूएल इंजेक्शन और कोड इंजेक्शन सभी इस तरह से काम करते हैं। "वर्ड" मैक्रो वायरस कम से कम आंशिक रूप से प्रचारित करते हैं क्योंकि "वर्ड" मैक्रोज़ .doc फ़ाइलों में शामिल हैं। फ़ाइल द्वारा डेटा को निष्पादन योग्य से अलग करना एक स्तर की सुरक्षा है, डेटा को एक निर्देशिका में रखना, एक दूसरे में निष्पादन योग्य, एक 3 में टेम्पलेट, एक 4 में कॉन्फ़िगर करना डेटा को भ्रमित करने और जगह में निष्पादन योग्य होने के लिए और भी अधिक बाधाएं डालता है।
ब्रूस एडिगर

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

@fluffy अलग फ़ाइल सिस्टम थोड़ा मजबूत जुदाई प्रदान करते हैं, लेकिन के रूप में यह संभव अलग करने के लिए नहीं है उस बिंदु आंशिक रूप से विवादास्पद है /bin, /etc, से /
jw013

@fluffy - सहमत, कोई "भौतिक" अलगाव मौजूद नहीं है, या संभव है। लेकिन यह एक अलग नाम है। टेम्पलेट या अन्य डेटा खोजने के लिए मैलवेयर को कुछ अन्य निर्देशिका ("के बजाय" या dirname $ 0 या कुछ) में देखना होगा। यह पूर्ण सुरक्षा नहीं है, कांच की खिड़की बंद करने से अधिक पूर्ण सुरक्षा है। सुरक्षा एक आर्थिक अच्छा है, काम की प्रत्येक अतिरिक्त इकाई के लिए सीमांत मूल्य। हर छोटी चीज़ मदद करती है।
ब्रूस एडिगर

11

कोई फर्क नहीं पड़ता कि कौन सा संगठन चुना गया है, यह कुछ चीजों को आसान बना देगा और कुछ चीजें अधिक कठिन।

प्रकार, यूनिक्स माध्यम से फ़ाइलों का आयोजन (में bin, man, lib/python, ...), यह आसान फ़ाइलों का उपयोग करने के लिए बनाता है। यदि आप एक कमांड चलाना चाहते हैं, तो आप जानते हैं कि इसे कहां खोजना है, कोई फर्क नहीं पड़ता कि कौन सा पैकेज इसे प्रदान करता है। यदि आप प्रलेखन के माध्यम से खोज करना चाहते हैं, तो यह सब एक ही स्थान पर है। यदि कुछ प्रोग्राम एक विम सिंटैक्स हाइलाइटिंग मॉड्यूल, एक zsh पूरा होने वाला फ़ंक्शन, या पायथन बाइंडिंग प्रदान करता है, तो संबंधित फ़ाइल उस स्थान पर होगी जहां vim / zsh / python इसे पा सकते हैं।

यूनिक्स उपयोग पैटर्न द्वारा फाइलों को भी व्यवस्थित करता है। कॉन्फ़िगरेशन फ़ाइलें अंदर जाती हैं /etc, सामान्य ऑपरेशन में परिवर्तन नहीं करने वाली फाइलें अंदर जाती हैं /usrऔर जो फाइलें बदलती हैं वे स्वचालित रूप से अंदर चली जाती हैं /var। उपयोगकर्ता डेटा के अंतर्गत जाता है /home। यह कॉन्फ़िगरेशन प्रबंधन के लिए बहुत उपयोगी है (प्रबंधित करें कि /etcप्लस में स्थापित पैकेजों की सूची क्या है)। यह बैकअप रणनीतियों को परिभाषित करने के लिए भी उपयोगी है: क्या है /etcऔर /homeगंभीर रूप से महत्वपूर्ण है, जबकि क्या है जो /usrआसानी से फिर से डाउनलोड किया जा सकता है।

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

विंडोज के साथ इसके विपरीत। विंडोज ने बिना पैकेज प्रबंधन के शुरू किया, और प्रत्येक एप्लिकेशन ने कहीं न कहीं अपनी खुद की निर्देशिका बनाई। सभी फाइलें सामान्य रूप से उस निर्देशिका के अंदर होंगी: प्रोग्राम, स्थिर डेटा, उपयोगकर्ता डेटा, ... कभी-कभी पुस्तकालयों के अलावा जो प्रोग्राम आम प्रणाली निर्देशिका में संघर्षों ("डीएलएल नरक") के लिए कोई संबंध नहीं छोड़ेंगे। समय के साथ, विंडोज बहु-उपयोगकर्ता बन गया, सिस्टम निर्देशिकाओं से उपयोगकर्ता निर्देशिकाओं को अलग करने की आवश्यकता होती है। Windows ने कॉन्फ़िगरेशन फ़ाइलों (यूनिक्स /etc) और कुछ सिस्टम डेटा (यूनिक्स के) के लिए एक केंद्रीय स्थान भी बनाया/var), रजिस्ट्री। यह पैकेज प्रबंधन की कमी और एकल-उपयोगकर्ता प्रणाली के रूप में प्रारंभिक इतिहास के कारण बड़े पैमाने पर एक ऐतिहासिक कलाकृति का अधिक है। विंडोज दृष्टिकोण में बहुत सी सीमाएँ हैं: यह सॉफ्टवेयर संकुल को आसानी से इंटरैक्ट नहीं करने देता है। उदाहरण के लिए, अधिकांश इंस्टॉल किए गए सॉफ़्टवेयर डिफ़ॉल्ट कमांड खोज पथ पर समाप्त नहीं होते हैं, इसलिए यह स्क्रिप्टिंग के किसी भी रूप के साथ बुरी तरह से इंटरैक्ट करता है। इंस्टॉलर आमतौर पर एक विशेष मामले के रूप में एक मेनू आइकन प्रदान करते हैं - एक अलग सिस्टम निर्देशिका (ए ला लानिक्स!) में गिरा दिया जाता है।

यूनिक्स दृष्टिकोण की एक सीमा यह है कि यह आसानी से पैकेज के कई संस्करणों के सह-अस्तित्व की अनुमति नहीं देता है, जो विशेष रूप से समस्याग्रस्त है जबकि पैकेज को उन्नत किया जा रहा है। दोनों दुनिया के सर्वश्रेष्ठ पाने का एक तरीका यह होगा कि प्रत्येक पैकेज को अपनी निर्देशिका (एक /optसंरचना) में अनपैक किया जाए , और पैकेज निर्देशिका से प्रतीकात्मक लिंक के वन को एक /usrसंरचना में बनाया जाए। स्टोव की तरह यह सॉफ्टवेयर है।

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


1
बहुत बढ़िया। मेरी राय में, हालांकि, यह केवल इस्तेमाल किया अलग-अलग संकुल प्रबंधन करने के लिए आसान हो सकता है। विंडोज़ रजिस्ट्री के आगमन ने उस सब को बदल दिया और फिर कुछ। न केवल यह विशाल और भूलभुलैया है - यह जानबूझकर भी है - बाइट कोड में कुछ मूल्यों के साथ जबकि अन्य नहीं हैं और संरचना के लिए कोई वास्तविक कविता या कारण नहीं है। मुझे लगता है कि यदि आप एक प्रबंधित ओएस विकसित करना चाहते हैं और व्यापार रहस्य और मालिकाना तरीकों की रक्षा करना चाहते हैं तो यह तरीका है : भ्रामक।
चाटुकार

3

उपर्युक्त प्राथमिक लाभ, और संरचना के लिए ऐतिहासिक कारणों में से एक, बूट प्रक्रिया में विभिन्न चरणों में उपलब्ध कई संस्करणों / डिस्क पर भौतिक पृथक्करण है।

एक और लाभ यह है कि विभिन्न निर्देशिकाओं को वॉल्यूम / फाइल सिस्टम पर मुहैया कराया जा सकता है जो निर्देशिका के डेटा के लिए अनुकूलित हैं। उदाहरण के लिए, के tmpfsलिए /run; और /sbinकेवल पढ़ने के लिए मीडिया / ROM पर।

इसके अलावा, वॉल्यूम स्थानीय या दूरस्थ, व्यक्तिगत या साझा किए जा सकते हैं।

अंत में, UNIX (OS X ), लिनक्स ( ROX डेस्कटॉप ) और विंडोज ( PortableApps.com ) में उपयोग किए जाने वाले वैकल्पिक दृष्टिकोण के लिए एप्लिकेशन निर्देशिका (@fluffy द्वारा उल्लिखित ) देखें।.app


1

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

एक फाइल सिस्टम कन्वेंशन जो मुख्य चीज प्रदान करता है, वह सिर्फ यह है - एक कन्वेंशन, ताकि लोगों को पता हो कि फाइलों को कहां देखना है (मैन्युअल रूप से या कोड में हो)। इसके एक दूसरे पर एक तरह से होने का कोई वास्तविक तकनीकी कारण नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.