Du -h और ls -lh में क्या अंतर है?


31

मुझे एक कठिन समय मिल रहा है जो फाइलों के आकार को पढ़ने का सही तरीका है क्योंकि प्रत्येक कमांड आपको अलग-अलग परिणाम देता है। मैं http://forums.devshed.com/linux-help-33/du-and-ls-generating-inconsistent-file-sizes-42169.html पर एक पोस्ट भर आया, जो निम्नलिखित बताता है;

du आपको फ़ाइल का आकार देता है क्योंकि यह फ़ाइल सिस्टम पर रहता है। (IE हमेशा आपको एक परिणाम देगा जो 1024 से विभाज्य है)।

ls आपको फ़ाइल का वास्तविक आकार देगा।

आप जो देख रहे हैं वह फ़ाइल के वास्तविक आकार और डिस्क पर अंतरिक्ष की मात्रा के बीच का अंतर है। (जिसे फ़ाइल सिस्टम दक्षता भी कहा जाता है)।

फ़ाइल सिस्टम और फिल्म के वास्तविक आकार के बीच इसका अंतर क्या है

जवाबों:


48

इसे सुस्त स्थान कहा जाता है :

व्यक्तिगत बिट्स और बाइट्स के शीर्ष पर अमूर्तता की प्रत्येक परत तब बर्बाद होती है जब डेटाफ़ाइल सबसे छोटी डेटा इकाई से छोटी होती है, फ़ाइल सिस्टम ट्रैक करने में सक्षम होता है। किसी सेक्टर, क्लस्टर, या ब्लॉक के भीतर बर्बाद हुई जगह को आमतौर पर स्लैक स्पेस के रूप में जाना जाता है, और इसका उपयोग आमतौर पर अतिरिक्त डेटा के भंडारण के लिए नहीं किया जा सकता है। व्यक्तिगत 256-बाइट क्षेत्रों के लिए, अधिकतम व्यर्थ स्थान 255 बाइट्स है। 64 किलोबाइट समूहों के लिए, अधिकतम बर्बाद स्थान 65,535 बाइट्स है।

इसलिए, यदि आपका फाइल सिस्टम 64 KB की इकाइयों में जगह आवंटित करता है, और आप 3 KB फाइल स्टोर करते हैं, तो:

  • फ़ाइल का वास्तविक आकार 3 KB है।
  • फ़ाइल का निवासी आकार 64 KB है, क्योंकि उस इकाई में शेष 61 KB को किसी अन्य फ़ाइल में आवंटित नहीं किया जा सकता है और इस प्रकार खो जाता है।

नोट : कुछ फाइल सिस्टम ब्लॉक सबलेस्टेशन का समर्थन करते हैं , जो एक ही ब्लॉक में कई छोटी फाइलों (या बड़ी फाइलों के टेल एंड्स) को असाइन करके इस समस्या को कम करने में मदद करता है।


1
यह एक अच्छा स्पष्टीकरण है।
SpacemanSpiff

1
@ अप्रेंटिस 5 - धन्यवाद अप्रेंटिस 5। इसलिए जब मैं ls का उपयोग करके किसी फ़ाइल या फ़ोल्डर के आकार को देख रहा हूं तो वह वास्तविक आकार देता है जबकि du रेजिडेंट साइज लौटाता है? क्या वो सही है? तो जब फ़ाइल का आकार देखते हैं, जो सबसे सटीक है अर्थात निवासी आकार या फ़ाइल का आकार या वह एक मनमाना सवाल है?
मूँगफली के दाने

8
@PeanutsMonkey, सटीकता देखने वाले की आंखों में है। ;-) मूल रूप से, यदि आप इस बारे में चिंतित हैं कि फ़ाइल कहीं और कितनी जगह लेगी (जैसे कि नेटवर्क पर प्रतिलिपि बनाना, ज़िप फ़ाइल में जोड़ना, बाहरी ड्राइव पर बैकअप आदि), तो वास्तविक आकार वह है जो आप देखभाल करते हैं। यदि आप उस ड्राइव पर छोड़ी गई जगह की मात्रा से चिंतित हैं जहाँ फ़ाइल अभी रहती है, तो आप निवासी आकार की परवाह करते हैं। चूंकि duआप disk uऋषि को दिखा रहे हैं , यह वर्तमान ड्राइव पर उठाए गए स्थान को देख रहा है, और इस प्रकार यह आपको निवासी आकार दिखाता है।
अप्रेंटिस ५

1
@ अप्रेंटिस 5 - यह पोस्ट के लगभग एक साल बाद है लेकिन मैं उत्सुक हूं कि इसका उपयोग करते समय उपरोक्त उत्तर कैसे भिन्न होता है df -h?
मूंगफली का जूल

1
dfशेष ब्लॉक की संख्या की रिपोर्ट करता है * फाइलसिस्टम ब्लॉक का आकार। इस मामले में यह अधिक पसंद होगा du, क्योंकि आंशिक रूप से उपयोग किए जाने वाले ब्लॉक को पूरी तरह से आवंटित माना जाता है। dfमूल रूप से स्टेटवॉफ़ का अनुवाद करता है , इसलिए आप उस सिस्टम कॉल को देख सकते हैं कि क्या हो रहा है इसका एक बेहतर विचार प्राप्त करने के लिए।
अप्रेंटिस ५

19

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

मजेदार ट्रिक: एक बहुत बड़ी स्पार्स फाइलें बनाएं, फिर अपने दोस्तों को प्रभावित करें कि आपके पास कितना डिस्क स्थान है ("देखो, मैं अपनी हार्ड ड्राइव पर ग्यारहवीं-गजिलियन 1 टीबी फाइलें संग्रहीत कर रहा हूं!")। ठीक है, शायद तब इतना मज़ा नहीं आया।


6

फाइलसिस्टम ब्लॉक से बने होते हैं। फ़ाइलों को बड़े करीने से ब्लॉक में फिट करने की आवश्यकता नहीं है। यदि कोई फ़ाइल 1024 बाइट्स थी, तो इसका आकार ls और du में 1024 होगा। यदि फ़ाइल का आकार 1025 था, तो आकार 1025 ls और 2048 du में होगा।

ऊपर दिए गए उदाहरण पर ध्यान दें कि 1024 का एक ब्लॉक आकार है। बड़े ब्लॉक आकार इन दिनों आदर्श हैं e, g,

ls -l fred
-rw-r--r-- 1 iain users 1024 Jul 13 22:06 fred

du -h fred
8.0K    fred

0

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

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