Zfs সংকোচনের সাথে ফাইলের আকার


9

আমি সাধারণত একটি সম্পূর্ণ ডিরেক্টরি ট্রি ব্যবহার করে আকারটি অনুমান করি du -ks $DIRECTOY_TREE_ROOTতবে zfs সংক্ষেপণ চালু থাকা অবস্থায় এই পদ্ধতিটি ব্যবহার করা যাবে না।

দ্বারা totalপ্রদর্শিত ls -lএকটি একক ডিরেক্টরি জন্য ঠিক আছে, কিন্তু কোন ডিরেক্টরি ট্রি জন্য একই ফলাফল পেতে সবচেয়ে সহজ উপায়?

সম্পাদনা করুন:

অপারেটিং সিস্টেমটি সোলারিস 10।

আমি আসল ফাইলের আকার খুঁজছি, ডিস্কে ব্যবহৃত স্থানটি নয়।


আপনি কি ডিস্কে ব্যবহৃত প্রকৃত স্থান বা সত্য ফাইলের সন্ধান করছেন?
justarobert

উত্তর:


5

এটি কেবল কাজ করা উচিত:

find . -type f -exec ls -l {} + | nawk '{s=s+$5}
END {print s}'

12

শুধু du -b উদাহরণ ব্যবহার করুন:

# du -sh .
215G    .

# du -sbh .
344G    .

সোলারিস 10 এর সাথে কোনও "-বি" বিকল্প না থাকা সত্ত্বেও বারোটি আপ du-...
jlliagre

সোলারিস ১১-এ এটির মাধ্যমে কাজ করেgdu -bsh foldername
কপি রান স্টার্ট

3

'-Ls' প্যারামিটারের সাহায্যে 'সন্ধান' কমান্ড থেকে সরাসরি ফাইলের আকার এবং আনুমানিক ডিস্কের ব্যবহার উভয়ই পাওয়া সম্ভব

 function lsdu() (
    export SEARCH_PATH=$*
    if [ ! -e "$SEARCH_PATH" ]; then
        echo "ERROR: Invalid file or directory ($SEARCH_PATH)"
        return 1
    fi
    find "$SEARCH_PATH" -ls | gawk --lint --posix '
        BEGIN {
            split("B KB MB GB TB PB",type)
            ls=hls=du=hdu=0;
            out_fmt="Path: %s \n  Total Size: %.2f %s \n  Disk Usage: %.2f %s \n  Compress Ratio: %.4f \n"
        }
        NF >= 7 {
            ls += $7
            du += $2
        }
        END {
            du *= 1024
            for(i=5; hls<1; i--) hls = ls / (2^(10*i))
            for(j=5; hdu<1; j--) hdu = du / (2^(10*j))
            printf out_fmt, ENVIRON["SEARCH_PATH"], hls, type[i+2], hdu, type[j+2], ls/du
        }
    '
)

কিছু নমুনা কমান্ড এবং আউটপুট:

-bash-3.00# lsdu test_sloccount/
Path: test_sloccount/ 
  Total Size: 30.90 MB 
  Disk Usage: 1.43 MB 
  Compress Ratio: 21.6250 

2

এই অনেলাইনারের কাঙ্ক্ষিত ফলাফল করা উচিত:

find $DIRECTOY_TREE_ROOT -type d -exec ls -l '{}' \; | awk '/^total\ .[0-9]+$/ { sum+=$(NF) }END{ print sum }'

এটি পরীক্ষা করার জন্য আমার কাছে জেডএফএস পার্টিশন নেই, তবে আমার এক্সট 4 পার্টিশনে এটি একই ফলাফলকে ফলাফল দেয় du -ks


আসল ফাইলের আকার জিজ্ঞাসা করার জন্য প্রশ্নটি সম্পাদনা করা হয়েছে, ডু এবং এলএস উভয়ই যে রিপোর্ট করছে তা ডিস্কে ব্যবহৃত হয়নি।
jlliagre

2

ম্যান ডু সম্ভবত এখানে সাহায্য করবে:

 --apparent-size
      print apparent sizes, rather than disk usage;  although
      the  apparent size is usually smaller, it may be larger
      due to holes in (`sparse') files,  internal  fragmenta-
      tion, indirect blocks, and the like

এটি সোলারিস 10 ডু হিসাবে কোনও বিকল্প নয়। এটি একটি মানহীন Gnu এক্সটেনশন।
jlliagre

হতে পারে. সোলারিস এক্সপ্রেস 11 এর এটি রয়েছে, যদিও।
দ্য ওয়াববিট

4
সোলারিস 10 গনু ডু বান্ডেল দেয় না। সোলারিস 11 এক্সপ্রেসে উভয় / ইউএসআর / বিন / ডু রয়েছে যা -আবার-আকারের বিকল্পটি এবং / usr / gnu / bin / du সমর্থন করে না যা এটি সমর্থন করে।
jlliagre

2

আমি সম্পূর্ণতার জন্য এই প্রশ্নের উত্তর ফ্রিবিএসডি-র অন্তর্ভুক্ত করতে যাচ্ছি। মতে man du:

 -A      Display the apparent size instead of the disk usage.  This can be
         helpful when operating on compressed volumes or sparse files.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.