در این پست خواهید خواند:
هنگام فهرست کردن محتویات یک دایرکتوری با استفاده از دستور 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/db4.0K /var/empty4.0K /var/games77G /var/lib4.0K /var/local0 /var/lock3.3G /var/log0 /var/mail4.0K /var/opt0 /var/run196K /var/spool28K /var/tmp85G total
راه دیگر برای دریافت گزارش در مورد استفاده از دیسک زیر شاخه های سطح اول استفاده از گزینه --max-depth است:
sudo du -h --max-depth=1
خروجی:
77G /var/lib24K /var/db4.0K /var/empty4.0K /var/local4.0K /var/opt196K /var/spool4.0K /var/games3.3G /var/log5.0G /var/cache28K /var/tmp85G /var85G 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/lib75G /var/lib/libvirt/images75G /var/lib/libvirt5.0G /var/cache/pacman/pkg
نتیجه گیری:
در لینوکس می توانید اندازه یک دایرکتوری را با استفاده از دستور du بدست آورید.
در صورت داشتن هرگونه سوال یا نکته در زیر کامنت بگذارید.