डु गलत तरीके से खाली निर्देशिका की रिपोर्ट करता है


13

मैं इन आदेशों का उपयोग कर रहा हूं:

du -sh --apparent-size ./*
du -sh ./*

दोनों रिपोर्टिंग:

4.0K    ./Lightroom_catalog_from_win_backup
432M    ./Lightroom catalog - wine_backup

जबकि उन निर्देशिकाओं में शामिल हैं:

$ll ./"Lightroom catalog - wine_backup"
total 432M
-rwxrwx--- 1 gigi gigi 432M Mar 18  2018 Lightroom 5 Catalog Linux.lrcat
-rwxrwx--- 1 gigi gigi  227 Nov 21  2015 zbackup.bat
$ll ./Lightroom_catalog_from_win_backup
total 396M
-rwxrwx--- 3 gigi gigi 396M Dec 17 09:35 Lightroom 5 Catalog Linux.lrcat
-rwxrwx--- 3 gigi gigi  227 Dec 17 09:35 zbackup.bat

क्यों duरिपोर्ट 4.0Kकर रहा है ./Lightroom_catalog_from_win_backup और मैं इसे सही ढंग से रिपोर्ट करने के लिए कैसे बना सकता हूं?

पुनश्च: अन्य प्रणाली की जानकारी:

$stat --file-system $HOME
  File: "/home/gigi"
    ID: 5b052c62a5a527bb Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 720651086  Free: 155672577  Available: 119098665
Inodes: Total: 183050240  Free: 178896289

$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:        16.04
Codename:       xenial

अब तक पहले से दिए गए उत्तरों पर निर्माण करने के लिए, क्या /bin/ls -li './*/Lightroom 5 Catalog Linux.lrcat'लौटाता है?
doneal24

ls -li ./*/"Lightroom 5 Catalog Linux.lrcat" 36831321 -rwxrwx--- 1 gigi gigi 432M Mar 18 2018 ./Lightroom catalog - wine_backup/Lightroom 5 Catalog Linux.lrcat 36833201 -rwxrwx--- 3 gigi gigi 396M Dec 17 09:35 ./Lightroom_catalog_from_win_backup/Lightroom 5 Catalog Linux.lrcat
adrhc

1
यह उत्तर के साथ एक समस्या प्रस्तुत करता है क्योंकि तीन की लिंक गणना के साथ फाइल duकमांड में कहीं और नहीं गिना जा रहा है । तो आपके पास अपनी कार्यशील निर्देशिका में केवल दो उपनिर्देशिकाएँ हैं?
doneal24

नहीं, मेरे पास लगभग 15 अन्य हैं
adrhc

जवाबों:


23

यदि फ़ाइलें हार्ड लिंक हैं, तो मैं पुन: पेश कर सकता हूं:

~ mkdir foo bar
~ dd if=/dev/urandom of=bar/file1 count=1k bs=1k
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00985276 s, 106 MB/s
~ ln bar/file1 foo/file1
~ du -sh --apparent-size foo bar
1.1M    foo
4.0K    bar

यह अपेक्षित व्यवहार है। से जीएनयू duडॉक्स :

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

यदि आपको वास्तव में कठिन लिंक के दोहराया आकारों की आवश्यकता है, तो -lविकल्प का प्रयास करें :

' -l'
' --count-links'
सभी फाइलों के आकार की गणना करें, भले ही वे पहले से ही दिखाई दें (एक कड़ी के रूप में)।

~ du -sh --apparent-size foo bar -l
1.1M    foo
1.1M    bar

15

ध्यान दें कि 3दो फाइलों Lightroom 5 Catalog Linux.lrcatऔर के लिए लिंक की गिनती कैसे zbackup.batहै Lightroom_catalog_from_win_backup

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

उदाहरण:

$ ls -l
total 41024
-rw-r--r--  2 kk  wheel  10485760 Dec 17 09:07 file1
-rw-r--r--  2 kk  wheel  10485760 Dec 17 09:07 file2

$ du -h file1
10.0M   file1

$ du -h file2
10.0M   file2

$ du -h .
10.0M   .

यह व्यवहार उपयोगिता के लिए पोसिक्स मानकdu द्वारा स्पष्ट रूप से अनिवार्य है :

एक फ़ाइल जो एक फ़ाइल ऑपरेंड के तहत कई बार होती है और जिसकी लिंक गणना 1 से अधिक होती है, उसे केवल एक प्रविष्टि के लिए गिना और लिखा जाएगा।

duइस व्यवहार को अक्षम करने के लिए कुछ कार्यान्वयन में गैर-मानक विकल्प हैं। जीएनयू के लिए du, यह -lविकल्प के साथ किया जाता है ।


3

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

जीएनयू के लिए आदमी पेज duप्रदान करता है -l, --count-linksइस मानक अनुकूलन (देखें बंद करने की man duअपने कार्यान्वयन यह भी शामिल है, तो जाँच करने के लिए)। या आप duप्रत्येक निर्देशिका के लिए एक बार दो बार चलते हैं ।

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