ডিরেক্টরিটির আনুমানিক আকার পান (সমস্ত ফাইল এবং উপ-ডিরেক্টরি সহ পুনরাবৃত্তভাবে)


10

কোনও ডিরেক্টরিতে (তার সমস্ত উপ-ডিরেক্টরি সহ, পুনরাবৃত্তভাবে) নিখুঁতভাবে সঠিক আকার পাওয়ার কোনও উপায় আছে কি? আমি সাবদারদের আকারগুলি চাই না, আমি কেবলমাত্র বোঝাতে চাইছি যে তারা বারবার রিপোর্ট করা মোট আকারের মধ্যে অন্তর্ভুক্ত করা উচিত।

এটি ব্যর্থ হচ্ছে, আনুমানিক আকার পাওয়ার একটি উপায়? আমি এর লাইন বরাবর এমন কিছু ভাবছি যা dfপুরো ফাইল সিস্টেমের জন্য একটি দ্রুত প্রতিক্রিয়া তৈরি করে তবে এই সময় নির্দিষ্ট ডিরেক্টরি (এবং এটির উপ ডিরেক্টরি)।

সমাধানগুলিতে duবয়সের সময় লাগে বলে মনে হয় যখন কোনও ডিরেক্টরি দেওয়া হয় তখন হাজার হাজার সাব-ডায়ার থাকে।


ব্যবহার করা duহ'ল একমাত্র পদ্ধতি যা আমি সচেতন। সমস্যাটি হ'ল ডেটাটি হায়ারার্কি জুড়ে ছড়িয়ে থাকে তাই এটি গণনাগুলি পাওয়ার জন্য কোনও সরঞ্জাম দ্বারা লম্বা করা দরকার।
slm

উত্তর:


15

আমি এটি বেশ দরকারী।

du -sm Directory

বা অভ্যন্তর ডিরেক্টরিগুলির একটি ব্রেকডাউন পেতে

du -sm Directory/*

এবং তারপরে একটি সাজানোর সাথে যদি এটির অনেক সাবডিয়ার থাকে

du -sm Directory/* | sort -n 

আমি -m বিকল্পটি ব্যবহার করার কারণটি হ'ল আমি কোনও মেগাবাইট আউটপুট পাব তা নিশ্চিত করা। আমি দেখতে পাচ্ছি এটি আমার পক্ষে দর্শনীয়ভাবে তুলনা করা সহজ (যখন আমি ইউনিটগুলির মিশ্রণ পাচ্ছি না, উদাহরণস্বরূপ 999 কেবি এবং 1 এমবি বনাম 999000 এমবি এবং 1000000 এমবি তুলনা করুন), যোগ করা সুবিধাটি হ'ল আপনি আউটপুটটিকে বাছাই করতে পারবেন।

এটিকে সমস্ত ব্যাকগ্রাউন্ডে রাখুন এবং আউটপুট পুনঃনির্দেশ করুন, এটি যে কোনও পদ্ধতিতে যে সময় ব্যবহার করে তা সময় নিতে চলেছে, এটি অনেকগুলি ফাইলের পথ যা সময় নিতে পারে।

du -sm Directory/* | sort -nr > ~/cacheDu.log &

বিপরীত বাছাই করে নোট করুন যাতে বড়গুলি শুরুতে থাকে। প্রতিটি এন মিনিটে ক্রোন রান এ এটি যুক্ত করুন।

তারপরে একটি উপনাম ডুচে সহ, আপনি মোটামুটি আপ টু ডেট ডিরেক্টরি ব্যবহার পেয়েছেন।

export alias ducache='head -n 15 ~/cacheDu.log'

@ এক্স টিয়ান গ্লেন জ্যাকম্যানের উত্তর সম্পর্কে আমার মন্তব্য দেখুন
মার্কাস জুনিয়াস ব্রুটাস

স্বীকৃত, সে কারণেই আমি -m এবং সাজান ব্যবহার করি
এক্স টিয়ান

3
মনে রাখবেন shopt -s dotglob, অন্যথায় du -sm Directory/*লুকানো ফাইল / ডিরেক্টরি গণনা করবেন না।
দিমিত্রি গ্রিগরিয়েভ

@ এক্সটিয়ান দুঃখিত, তবে আমি কিছু কমান্ড pls সাহায্য করতে পারিনি ।
মাভেň ツ

আমি থেকে বুঝেছি এখানে
ম্যাভেনツ

5
du -sh "$dir"

"মানব" বিন্যাসিত আউটপুটে আপনাকে মোট আকারের সংক্ষিপ্তসার দেবে।


আপনি যেহেতু বিকল্পের সন্ধান করেছেন du, তাই আমি চেষ্টা করেছি find, তবে এটি ঠিক একই:

$ find . -printf "%s\n" | { 
    sum=0
    while read size; do ((sum+=size)); done
    echo $sum
}
122865202884
$ du -sb .
122865202884    .

ধন্যবাদ, আমি এটি সম্পর্কে অবহিত তবে duএটির ফলে খুব দীর্ঘ সময় নেয় কারণ এটি সঠিক ফলাফল দেয়। আমি এমন একটি সরঞ্জাম / কমান্ডের প্রত্যাশা করছিলাম যা দ্রুত এন 'নোংরা আনুমানিক উত্তর সরবরাহ করে।
মার্কাস জুনিয়াস ব্রুটাস

dfপুরো ফাইল সিস্টেমে কাজ করে কিন্তু আছে ।
গ্লেন জ্যাকম্যান

1

আপনি আমার উত্তর পছন্দ নাও করতে পারেন তবে আমি মনে করি আপনি যা চান তা করার সর্বোত্তম উপায়টি ক্রোন ব্যবহার করে নিয়মিত ব্যাকগ্রাউন্ডে "ডু-এস" চালানো এবং ফলাফলটি কোনও ফাইলে সংরক্ষণ করা। তারপরে আপনি যখন আনুমানিক মান চান তখন ফাইলটি থেকে মানটি ব্যবহার করুন। আপনি কত সময় ডু চালাতে হবে তা সিদ্ধান্ত নিতে পারেন। আমি মান পাওয়ার কোনও দ্রুত উপায় দেখছি না। কমান্ড du এটির জন্য কার্যকর is

আপনি খুব তাড়াতাড়ি এটি করতে কেবলমাত্র অন্য উপায়টি হ'ল ডিরেক্টরিটির জন্য একটি ফাইল সিস্টেম তৈরি করা, তবে df আপনাকে খুব দ্রুত উত্তর পেতে চাইবে।

যদি আপনার ডিরেক্টরি ব্যতীত ফাইল সিস্টেমে সমস্ত কিছু জানা খুব দ্রুত হয় তবে আপনি ফাইল সিস্টেমের জন্য ডিএফ চালাতে পারেন, আপনার ডিরেক্টরি এবং বিয়োগ বাদে অন্য কিছুর জন্য ড।


0

এটি আপনার প্রয়োজনগুলি (এক-লাইনের মুদ্রণ নয়) পুরোপুরি ফিট করে না তবে এটির সমাধান অন্যের সমাধানের চেয়ে সহজ:

du -a -h | sort -hr | head -2

এই কমান্ডটি আপনাকে ডিরেক্টরি এবং উপ-ডিরেক্টরি এবং বর্তমান ডিরেক্টরিতে বিগেষ্ট ফাইল বা উপ-ডিরেক্টরি আকার দেবে।

পিএস: head -2কোনও সাব ডিরেক্টরি যদি বর্তমান ডিরেক্টরিটির সমস্ত জায়গা নেয় এবং স্রোতের আগে শোনা যায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.