मैं ls -lकिसी फ़ाइल का तार्किक आकार प्राप्त करने के लिए उपयोग कर सकता हूं , लेकिन क्या फ़ाइल का भौतिक आकार प्राप्त करने का कोई तरीका है?
मैं ls -lकिसी फ़ाइल का तार्किक आकार प्राप्त करने के लिए उपयोग कर सकता हूं , लेकिन क्या फ़ाइल का भौतिक आकार प्राप्त करने का कोई तरीका है?
जवाबों:
ls -lआपको फ़ाइल का स्पष्ट आकार देगा, जो कि बाइट्स की संख्या है जिसे प्रोग्राम तब पढ़ेगा जब उसने फ़ाइल को शुरू से अंत तक पढ़ा होगा। duआपको "डिस्क पर" फ़ाइल का आकार देगा।
डिफ़ॉल्ट रूप से, duआपको डिस्क ब्लॉक की संख्या में फ़ाइल का आकार देता है, लेकिन आप -hइसके बजाय मानव पठनीय इकाई प्राप्त करने के लिए उपयोग कर सकते हैं । duअपने सिस्टम के लिए मैनुअल भी देखें ।
ध्यान दें कि बाइट पाने के लिए जीएनयू कोरुटिल du(जो संभवतः आपके पास लिनक्स पर है) -bके साथ --apparent-sizeविकल्प का अर्थ है । यह वह नहीं है जिसका उपयोग आप डिस्क पर वास्तव में उपयोग किए जाने वाले बाइट्स की संख्या प्राप्त करने के लिए करना चाहते हैं। इसके बजाय, का उपयोग करें --block-size=1या -B 1।
GNU के साथ ls, आप ls -s --block-size=1फ़ाइल पर भी कर सकते हैं । यह du -B 1फ़ाइल के लिए समान संख्या देगा ।
उदाहरण:
$ ls -l file
-rw-r--r-- 1 myself wheel 536870912 Apr 8 11:44 file
$ ls -lh file
-rw-r--r-- 1 myself wheel 512M Apr 8 11:44 file
$ du -h file
24K file
$ du -B 1 file
24576 file
$ ls -s --block-size=1 file
24576 file
इसका मतलब है कि यह एक 512 एमबी की फाइल है जो डिस्क पर लगभग 24 केबी लेती है। यह एक विरल फ़ाइल है (ज्यादातर शून्य जो वास्तव में डिस्क पर नहीं लिखे जाते हैं लेकिन फ़ाइल में तार्किक "छेद" के रूप में दर्शाए जाते हैं। पूर्व-आवंटित बड़ी फ़ाइलों के साथ काम करते समय स्पार्स फाइलें आम होती हैं, जैसे वर्चुअल मशीन या स्वैप फाइल आदि के लिए डिस्क चित्र। स्पार्स फ़ाइल बनाना त्वरित है, जबकि इसे शून्य से भरना धीमा (और अनावश्यक) है।
fallocateअपने लिनक्स सिस्टम के लिए मैनुअल भी देखें ।
du दिखाएगा कि वास्तव में कितना डेटा पढ़ा जा सकता है, जबकि lsपता चलता है कि डिस्क सेक्टर किस हद तक आवंटित किए गए हैं।
duवास्तव में फ़ाइल द्वारा उपयोग की गई डिस्क की मात्रा को दिखाता है, जबकि स्पष्ट आकार (तार्किक आकार) द्वारा दिखाया गया lsहै कि एक प्रोग्राम कितने बाइट्स से इसे पढ़ने में सक्षम होगा। यदि फ़ाइल विरल है, तो कुछ रीड बाइट्स शून्य होंगे, लेकिन उन्हें अभी भी उस प्रोग्राम तक पहुंचाया जाएगा जो उन्हें पढ़ता है (बस डिस्क से नहीं)।