Пошук усіх великих файлів у кореневій файловій системі


124

У мене є сервер linux, який наразі має менше місця:

/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   42G   23G  65% /u01
/dev/sda2              30G  7.4G   21G  27% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm

Як ти бачиш. /становить 78%. Я хочу перевірити, які файли чи папки займають місце.

Я спробував це:

find . -type d -size +100M

Що показує такий результат:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar

Тепер це моє питання. Я хочу тільки назва цих файлів , розташованих в папках, які споживають простір на /і не /u01чи /home. Оскільки /це основа всього, він показує мені кожен файл мого сервера.

Чи можливо отримати великі файли, що сприяють 78% /?


3
Див. -xdevПрисудок. Дивіться також du -kx / | xdu(або xdiskusage).
Стефан Шазелас


1
відповіднийfind . -type f -print | xargs du -sk | sort -rn
користувач13107

Відповіді:


216

Спробуйте:

find / -xdev -type f -size +100M

У ньому перераховані всі файли, розмір яких перевищує 100М.

Якщо ви хочете дізнатися про каталог, можете спробувати ncdu.

Якщо ви не працюєте з Linux, можливо, вам доведеться використовувати -size +204800або -size +104857600c, оскільки Mсуфікс для позначення мегабайт немає в POSIX.

find / -xdev -type f -size +102400000c

1
-xdevпросто перешкоджає пошуку переходити через файлові системи, тож ви будете шукати лише ваш поточний фізичний диск. Якщо це не те, що ви хочете, просто видаліть -xdevаргумент.
варильні панелі

49

Окрім відповіді @Gnouc, ви також можете додати, ls -laщоб отримати детальну інформацію. Ви повинні це sudo privilegesзробити.

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

Щоб бачити лише файли, розміщені в гігбайте, виконайте:

root# du -ahx / | grep -E '\d+G\s+'


1.8G    /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G    /.Spotlight-V100/Store-V2

44

Наступна команда не тільки знайде вам топ-50 найбільших файлів (> 100M) у вашій файловій системі, але і сортує (GNU sort) за найбільшою:

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50

-xdev Не спускайте каталоги в інші файлові системи.

При findвикористанні BSD, -xщо еквівалентно застарілому -xdevпервинному.

Для всіх файлів і каталогів це ще простіше:

du -ahx / | sort -rh | head -20

( -xпрапор необхідний для обмеження duоднієї файлової системи)

Якщо ви не використовуєте GNU sort(від coreutils), використовуйте його без -h:

du -ax / | sort -rn | head -20

Для поточного каталогу (для швидших результатів) замініть /на ..


1
Я хотів би зазначити, що цей метод хороший тим, що -hпоказує читабельний вихід людини та додає вибірковий вихід.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Дуже хороше рішення. Дякую.
Тігін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.