خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
یافتن فایل های حجیم در لینوکس
به مرور زمان دیسک شما با اطلاعات بسیاری که حجم بسیار زیادی را از دیسک اشغال می کنند پر که اتفاقا بسیاری از این اطلاعات غیرضروری هستند. معمولاً سیستمهای لینوکس به دلیل حجم بالای لاگ ها یا فایلهای بک آپ، فضای دیسک را پر می کنند.
در این آموزش نحوه یافتن بزرگترین فایل ها یا فایل های بزرگ و دایرکتوری ها در سیستم های لینوکس را با استفاده از دو دستور find و du توضیح می دهیم.
به عنوان مثال، برای جستجوی فایل هایی با حجم بیشتر از 100 مگابایت، در دیارکتروی جاری از دستور زیر استفاده کنید:
به جای . در دستور فوق، مسیر یا دایرکتوری مورد نظرتان که می خواهید جستجو در آنجا انجام شود را جایگزین کنید. البته اگر در همان دایرکتوری قرار دارید دیگر نیازی نیست دیارکتوری را قید و حتی می توانید . را از دستور فوق پاک کنید. به عنوان مثال خروجی ما را در ذیل مشاهده می کنید و بسته به دایرکتوری مورد نظرتان، خروجی شما متفاوت خواهد بود:
دستور find همچنین می تواند در ترکیب با ابزارهای دیگر مانند ls یا sort برای انجام عملیات روی آن فایل ها استفاده شود.
در مثال زیر، خروجی دستور find را به ls میدهیم که اندازه هر فایل یافت شده را نمایش دهد و در ادامه خروجی حاصله را به دستور sort می توانیم pipe کنیم تا بر اساس پنجمین ستون که file size است، مرتب سازی شود.
اگر خروجی حاوی خطوط زیادی از اطلاعات باشد، می توانید از دستور head برای پرینت فقط 10 خط اول استفاده کنید:
اجازه دهید دستور فوق را یک بررسی کلی کنیم:
دستور Find دارای گزینه های قدرتمند زیادی است. به عنوان مثال، میتوانید فایلهای بزرگتر از x روز، فایلهای بزرگ با پسوند خاص یا فایلهای بزرگی که متعلق به یک کاربر خاص هستند را جستجو کنید.
دستور زیر بزرگترین فایل ها و دایرکتوری ها را پرینت می کند.
در این آموزش نحوه یافتن بزرگترین فایل ها یا فایل های بزرگ و دایرکتوری ها در سیستم های لینوکس را با استفاده از دو دستور find و du توضیح می دهیم.
یافتن فایل های بزرگ با استفاده از دستور find
دستور find یکی از قدرتمندترین ابزارها برای ادمین های سیستم های لینوکسی است. find به شما امکان می دهد فایل ها و دایرکتوری ها را بر اساس پارمترهای مختلف از جمله حجم فایل جستجو کنید.به عنوان مثال، برای جستجوی فایل هایی با حجم بیشتر از 100 مگابایت، در دیارکتروی جاری از دستور زیر استفاده کنید:
sudo find . -xdev -type f -size +100M
به جای . در دستور فوق، مسیر یا دایرکتوری مورد نظرتان که می خواهید جستجو در آنجا انجام شود را جایگزین کنید. البته اگر در همان دایرکتوری قرار دارید دیگر نیازی نیست دیارکتوری را قید و حتی می توانید . را از دستور فوق پاک کنید. به عنوان مثال خروجی ما را در ذیل مشاهده می کنید و بسته به دایرکتوری مورد نظرتان، خروجی شما متفاوت خواهد بود:
/var/lib/libvirt/images/centos-7-desktop_default.img
/var/lib/libvirt/images/bionic64_default.img
/var/lib/libvirt/images/win10.qcow2
/var/lib/libvirt/images/debian-9_default.img
/var/lib/libvirt/images/ubuntu-18-04-desktop_default.img
/var/lib/libvirt/images/centos-7_default.img
دستور find همچنین می تواند در ترکیب با ابزارهای دیگر مانند ls یا sort برای انجام عملیات روی آن فایل ها استفاده شود.
در مثال زیر، خروجی دستور find را به ls میدهیم که اندازه هر فایل یافت شده را نمایش دهد و در ادامه خروجی حاصله را به دستور sort می توانیم pipe کنیم تا بر اساس پنجمین ستون که file size است، مرتب سازی شود.
find . -xdev -type f -size +100M -print | xargs ls -lh | sort -k5,5 -h -r
-rw------- 1 root root 40967M Jan 5 14:12 /var/lib/libvirt/images/win10.qcow2
-rw------- 1 root root 3725M Jan 7 22:12 /var/lib/libvirt/images/debian-9_default.img
-rw------- 1 root root 1524M Dec 30 07:46 /var/lib/libvirt/images/centos-7-desktop_default.img
-rw------- 1 root root 999M Jan 5 14:43 /var/lib/libvirt/images/ubuntu-18-04-desktop_default.img
-rw------- 1 root root 562M Dec 31 07:38 /var/lib/libvirt/images/centos-7_default.img
-rw------- 1 root root 378M Jan 7 22:26 /var/lib/libvirt/images/bionic64_default.img
اگر خروجی حاوی خطوط زیادی از اطلاعات باشد، می توانید از دستور head برای پرینت فقط 10 خط اول استفاده کنید:
find . -xdev -type f -size +100M -print | xargs ls -lh | sort -k5,5 -h -r | head
اجازه دهید دستور فوق را یک بررسی کلی کنیم:
find . -xdev -type f -size +100M -print
در این دستور فقط در دایرکتروی جاری به دنبال فایل ها با مشخصات داده شده می گردد. از آنجایی type f- استفاده کردیم، فقط به دنبال فایل ها می گردد و ساب دایرکتوری ها را به دلیل وجود xdev- نمی گردد و نام کامل فایل را روی خروجی استاندارد نمایش می دهد و به دنبال آن دستور print را برای پرینت کردن آن وارد کردیم. وجود size +100M بدیهی است که منظور فایل های بیش از 100 مگابایت است.xargs ls -lh
خروجی دستور find به xargs منتقل می شود که دستور ls -lh را اجرا می کند که خروجی را در فرمت یک لیست طولانی قابل خواندن نمایش داده شود.sort -k5,5 -h -r
خطوط را بر اساس ستون پنجم ((k5,5-مرتب کرده و مقادیر را در فرمت human-readable یا قابل خواندن(h-) مقایسه کرده و (r-) نتیجه را معکوس می کند.head
فقط 10 خط اول خروجی pipe شده را پرینت می کند.دستور Find دارای گزینه های قدرتمند زیادی است. به عنوان مثال، میتوانید فایلهای بزرگتر از x روز، فایلهای بزرگ با پسوند خاص یا فایلهای بزرگی که متعلق به یک کاربر خاص هستند را جستجو کنید.
یافتن فایل و دایرکتوری های بزرگ با دستور du
دستور du برای تخمین استفاده از فضا توسط فایل استفاده می شود و به ویژه برای یافتن دایرکتوری ها و فایل هایی که حجم زیادی از فضای دیسک را اشغال می کنند، مفید است.دستور زیر بزرگترین فایل ها و دایرکتوری ها را پرینت می کند.
du -ahx . | sort -rh | head -5
55G .
24G ./.vagrant.d/boxes
24G ./.vagrant.d
13G ./Projects
5.2G ./.minikube
du -ahx .
. تخمین استفاده از فضای دیسک در دایرکتوری جاری است. شمارش فایل ها و دایرکتوری ها (a)، سایز های پرینت به فرمت قابل خواندن (h)، و پرش از دایرکتوری ها در فایل سیستم های مختلف (x) است.sort -rh
خطوط را با مقایسه مقادیر قابل خواندن (h-) مرتب کرده و نتیجه را معکوس می کند(r-).head -5
فقط پنج خط اول خروجی Pipe شده را نمایش می دهد.
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: