'Ls -l' कमांड के आउटपुट में डायरेक्टरी के आकार का क्या अर्थ है?


जवाबों:


45

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


3
और जब एक निर्देशिका में हजारों फाइलें होती हैं, तो निर्देशिका का आकार आसानी से हो सकता है> 10KB
ग्लेन जैकमैन

1
@txwikinger मुझे लगता है कि निर्देशिकाओं में इनोड्स की सूची होती है, वास्तविक फ़ाइल नाम नहीं।
урослав Рахматуллин

6
@ УрославРахматуллин एक निर्देशिका प्रविष्टि में एक इनोड संख्या और एक फ़ाइल नाम होता है।
200_success

2
तो एक dir का "आकार" केवल फाइलों की संख्या से संबंधित है, फाइलों के आकार से नहीं?
ली

1
@ ली: हाँ, यह सही है।
बिल्ली

14

"किसी निर्देशिका का आकार" ls -l(किसी फ़ाइल प्रकार के साथ) के रूप में stat()कॉल के द्वारा रिपोर्ट किया गया मान है statbuf.st_size

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

  • वर्तमान में आमतौर पर नामित ऐतिहासिक UNIX फाइल सिस्टम में v7-fs, निर्देशिकाओं को 16 बाइट प्रविष्टियों को दोहराया गया था जिसमें 16 बिट इनोड संख्या और फ़ाइल नाम के 14 बाइट्स शामिल थे। एक निर्देशिका का "आकार" read(2)ऑपरेशन के संबंध में सार्थक था और हमेशा की तरह बढ़ता या ठहरता है। .और ..प्रविष्टियों उन्हें मैन्युअल रूप से वर्तमान और निर्देशिका एक स्तर से ऊपर के खिलाफ कड़ी मेहनत से जोड़ने के द्वारा बनाया जाता है। एक खाली खाली युवती निर्देशिका के लिए लिंक गणना 2 है।

  • BSD-4.2 फाइलसिस्टम में, जिसे 1989 (SVr4) कहा जाता है ufs, निर्देशिकाएं वैरिएबल लेंथ रिकॉर्ड्स की एक श्रंखला होती हैं, जो एक ऐसे फॉर्मेट का उपयोग करती हैं, जो स्थिर नहीं होता है, इसलिए यूजर स्पेस कमांड को इस फॉर्मेट को पढ़ने की अनुमति नहीं है। रिपोर्ट किया गया "आकार" v7-fs के अनुसार बाइट्स में आकार है, आकार आमतौर पर बढ़ता है या जैसा रहता है, लेकिन फ़ाइल सिस्टम के नए संस्करण कुछ शर्तों के तहत आकार को छोटा कर सकते हैं - लेकिन हमेशा नहीं जब आप यह उम्मीद कर सकते हैं। खाली निर्देशिका के लिए सूचित लिंक संख्या 2 है v7-fs

  • उन WOFSफाइलों के सिस्टम में , जिन्हें मैंने 1988 और मई 1991 के बीच डिजाइन और कार्यान्वित किया था, निर्देशिका हमेशा "आकार" 0 की रिपोर्ट करती है और कभी भी एक प्रकार की सामग्री नहीं होती है जिसे read(2)कॉल का उपयोग करके पढ़ा जा सकता है । इसका कारण यह है कि WOFSपहला कॉपी-ऑन-राइट फाइलसिस्टम है और क्योंकि WOFSफाइलों में डायरेक्टरी की रिपोर्ट है कि वे डायरेक्टरी में सूचीबद्ध होने के बजाय हैं। यदि आप एक WOFSनिर्देशिका का उपयोग करते हुए पढ़ते हैं readdir(), तो आप केवल इच्छित प्रविष्टियों के लिए डेटा प्राप्त करते हैं, लेकिन कभी भी .और के लिए नहीं ..। रिक्त निर्देशिका की लिंक संख्या WOFS1 है और संपूर्ण व्यवहार पूरी तरह से POSIX अनुरूप है।

  • में ZFS, कि WOFSकागजात पढ़ने के बाद लागू किया गया था । ZFSएक कॉपी-ऑन-राइट फाइलसिस्टम है और इसके लेखक इस बात से इनकार नहीं करते हैं कि उन्होंने अवधारणाओं को कॉपी किया था WOFS। ZFS पर निर्देशिकाएं रिपोर्ट करती number of directory entriesहैं st_size, इसलिए रिपोर्ट किए गए "आकार" का कोई वास्तविक अर्थ नहीं है, निर्देशिका डेटा से कब्जा किए गए डिस्क स्थान के संबंध में। ZFS निर्देशिका में कोई प्रविष्टि .और ..प्रविष्टियाँ नहीं हैं , लेकिन यदि आप कॉल करते हैं readdir(), तो ये प्रविष्टियाँ फ़ेक हैं और पहले दो ऑपरेशनों के लिए लौटी हैं। ZFS सूची में एकमात्र FS है जो हार्ड-लिंक निर्देशिकाओं का समर्थन नहीं करता है, लेकिन निर्देशिकाओं के लिए रिपोर्ट की गई लिंक संख्या हमेशा 2 होती है। ZFS में ये दो अनियमितताएँ गैर-POSIX ऐतिहासिक कार्यक्रमों में भ्रम को कम करने के लिए कार्यान्वित की जाती हैं।

  • ZFS के समान, WAFL कुछ विचारों को कॉपी करता है लेकिन सभी विचारों से नहीं WOFS। पेपर प्रकाशित WAFLहोने के 3 साल बाद नेटप्प का लिखा WOFSहुआ था, डब्ल्यूएएफएल कॉपी-ऑन-राइट है, लेकिन डब्ल्यूएएफएल "आकार" मानों की रिपोर्ट करता है जो इस धारणा के तहत "वास्तविक निर्देशिका आकार" हो सकता है कि निर्देशिका में सामग्री है।


13

एक निर्देशिका अपने और अपनी सामग्री के बारे में मेटा-डेटा के लिए 4096 बाइट्स (न्यूनतम पर) आरक्षित करती है।

इसके अलावा, 4096 बाइट्स ext2 / ext3 / ext4 फाइल सिस्टम के लिए डिफॉल्ट एलोकेशन यूनिट (ब्लॉक) है और इसके लिए कोई डायरेक्टरी कोई छोटी नहीं हो सकती है।

अलग-अलग फाइल सिस्टम पर आपको अलग-अलग डिफॉल्ट साइज वाली डिरेक्टरी मिल सकती हैं, जो कि फाइल सिस्टम के डिफॉल्ट ब्लॉक साइज के कारण है।

निर्देशिका आकार भी गतिशील रूप से बढ़ सकते हैं क्योंकि वे भरे हुए हैं, लेकिन एक बार मेटा-डेटा के लिए आरक्षित स्थान को बिना निर्देशिका को हटाए फिर से आवंटित नहीं किया जा सकता है।


1
आप किस मेटा-डेटा की बात कर रहे हैं?
स्टीफन चेज़लस

1
विवरण फाइल सिस्टम पर निर्भर करते हैं, लेकिन आम तौर पर इसमें मेटा-डेटा जैसे फ़ाइल नाम, इनोड नंबर, फ़ाइल प्रकार (फ़ाइल, डीआईआर, फीफो, सॉकेट, डिवाइस नोड, सिमलिंक, आदि), स्वामी, समूह, अनुमतियां, विशेषताएँ, ACLs, सिमलिंक लक्ष्य शामिल होते हैं।
कैस

6
@ क्रेगसैंडर्स, डायरेक्टरी में ऑब्जेक्ट का नाम और संबंधित इनकोड नंबर ही होता है । इनोड में ऑब्जेक्ट, स्वामी / समूह, अनुमतियाँ, जहाँ कहीं भी ACLs और विस्तारित गुण हैं, के संदर्भ में शामिल हैं, ... कुछ भी POSIX फाइल सिस्टम शब्दार्थ के गंभीर टूटने का कारण होगा।
वॉनब्रांड

मेरा UFS प्रति निर्देशिका अपने स्वयं के मेटा डेटा के लिए सिर्फ 512 बाइट्स रखता है।
फ़ूजएक्सल सिप

4

एक निर्देशिका एक निर्देशिका है, एक फोन निर्देशिका की तरह। यह सिर्फ एक फाइल है जिसमें संख्याओं की सूची और उनके आगे एक नाम है। प्रत्येक नंबर फ़ाइल-सिस्टम (इनोड संख्या) में एक फ़ाइल को संदर्भित करता है और नाम फ़ाइल नाम है।

आपको उस डेटा को सहेजने के लिए डिस्क स्थान की आवश्यकता होती है, यह कैसे आवंटित किया जाता है और उगाया जाता है और सिकुड़ा फाइलसिस्टम निर्भर है।


आप मेटा-डेटा को रखे जाने के वास्तविक विवरण और आकार के बढ़ने के संबंध में ब्लॉक आवंटन विचार शामिल कर सकते हैं। यह पहले से दिए गए अच्छे रूपक के साथ एक अधिक सटीक उत्तर पूर्ण करेगा। :)
n611x007

3
@naxa, कि फाइलसिस्टम आश्रित है, और यहां तक ​​कि एक फाइलसिस्टम (जैसे ext4) के भीतर भी, यह इस बात पर निर्भर करता है कि आप किस विकल्प को सक्षम करते हैं, इसलिए मैं इसे "फाइलसिस्टम पर निर्भर" के रूप में छोड़ दूंगा, बजाय कोशिश करने के और जो बहुत नहीं होगा इस सवाल के लिए प्रासंगिक है।
स्टीफन चेजलस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.