در این پست خواهید خواند:

هنگام فهرست کردن محتویات یک دایرکتوری با استفاده از دستور ls، ممکن است متوجه شده باشید که اندازه دایرکتوری ها تقریباً همیشه 4096 بایت (4 کیلوبایت) است. این اندازه فضای روی دیسک است که برای ذخیره اطلاعات متا دایرکتوری استفاده می شود، نه آنچه در آن وجود دارد.

دستوری که می خواهید برای به دست آوردن اندازه واقعی دایرکتوری استفاده کنید du است که مخفف "disk usage" میباشد.

دریافت اندازه دایرکتوری :

دستور du میزان فضای فایل مورد استفاده توسط فایل ها یا دایرکتوری های مشخص شده را نمایش می دهد. اگر مسیر مشخص شده یک دایرکتوری باشد، استفاده از میزان دیسک هر زیر شاخه در آن دایرکتوری را خلاصه می کند. اگر مسیری مشخص نشده باشد، du استفاده از فضای دیسک دایرکتوری فعلی را گزارش می دهد.

هنگامی که بدون هیچ سوئیچی اجرا می شود، du میزان استفاده از دیسک دایرکتوری داده شده و هر یک از زیر شاخه های آن را با مقیایس بایت نمایش می دهد.

اما ما میخواهیم فضای اشغال شده توسط دایرکتوری را در قالبی قابل خواندن توسط انسان نمایش دهید. به عنوان مثال، برای به دست آوردن اندازه کل دایرکتوری /var، دستور زیر را اجرا کنید:

sudo du -sh /var

خروجی چیزی شبیه به این خواهد بود:

85G	/var

بیایید دستور و استدلال های آن را توضیح دهیم:

• دستور با sudo شروع می شود زیرا اکثر فایل ها و دایرکتوری های داخل پوشه /var متعلق به کاربر root هستند و توسط کاربران عادی قابل خواندن نیستند. اگر sudo را حذف کنید دستور du "du: can read directory" را برمیگرداند.

• s - فقط اندازه کل دایرکتوری مشخص شده را نمایش دهید، مجموع اندازه فایل را برای زیر شاخه ها نمایش ندهد.

• h - چاپ اندازه ها در قالب قابل خواندن توسط انسان (h).

• /var - مسیر دایرکتوری مورد نظر برای دریافت اندازه.

اگر بخواهید میزان استفاده از دیسک زیردایرکتوری های سطح اول را نمایش دهید چه؟ شما دو گزینه دارید. اولین مورد استفاده از علامت ستاره (*) است که در زیر نشان داده شده است، به این معنی که "هر چیزی که با نقطه (.) شروع نمی شود مطابقت دهید". گزینه -c به du می‌گوید که مجموع کل اندازه‌ها را نمایش دهد:

sudo du -shc /var/*

خروجی:

24K /var/db
4.0K /var/empty
4.0K /var/games
77G /var/lib
4.0K /var/local
0 /var/lock
3.3G /var/log
0 /var/mail
4.0K /var/opt
0 /var/run
196K /var/spool
28K /var/tmp
85G total

راه دیگر برای دریافت گزارش در مورد استفاده از دیسک زیر شاخه های سطح اول استفاده از گزینه --max-depth است:

sudo du -h --max-depth=1

خروجی:

77G /var/lib
24K /var/db
4.0K /var/empty
4.0K /var/local
4.0K /var/opt
196K /var/spool
4.0K /var/games
3.3G /var/log
5.0G /var/cache
28K /var/tmp
85G /var
85G total

به طور پیش فرض، دستور du فضای دیسک مورد استفاده توسط دایرکتوری یا فایل را نشان می دهد. برای پیدا کردن اندازه ظاهری یک فهرست، از گزینه --apparent-size استفاده کنید. "اندازه ظاهری" یک فایل، میزان داده واقعی در فایل است.

sudo du -sh --apparent-size /var

هنگامی که یک دایرکتوری را از طریق SCP، Rsync.، یا SFTP انتقال می دهید، مقدار داده ای که از طریق شبکه منتقل می شود، اندازه ظاهری فایل ها است. به همین دلیل است که اندازه فضای روی دیسک مورد استفاده در منبع هنگام نمایش با du (بدون ----size) با اندازه روی هدف یکسان نیست.

دستور du را می توان با دستورات دیگر با pipe ها نیز ترکیب کرد.

به عنوان مثال، برای چاپ 5 فهرست بزرگ در پوشه /var، خروجی du را به دستور sort pipeمی کنیم تا دایرکتوری ها را بر اساس اندازه آنها مرتب کنیم و سپس خروجی را به دستور head که فقط 5 دایرکتوری برتر را چاپ می کند، pipe می کنیم. :

sudo du -h /var/ | sort -rh | head -5

خروجی:

85G /var/
77G /var/lib
75G /var/lib/libvirt/images
75G /var/lib/libvirt
5.0G /var/cache/pacman/pkg


نتیجه گیری:

در لینوکس می توانید اندازه یک دایرکتوری را با استفاده از دستور du بدست آورید.


در صورت داشتن هرگونه سوال یا نکته در زیر کامنت بگذارید.


بردیا
نویسنده

سلام، بردیا هستم و بیشتر از 10 سال هست که در زمینه فناوری اطلاعات فعال هستم

ثبت یک نظر

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند *

0 نظر ثبت شده

اینستاگرام