Как быстро найти, какая папка занимает место?

Я использую сервер Linux, мы используем этот сервер в качестве общего ресурса Samba. Со вчерашнего дня неожиданно увеличивается размер одного из общих дисков (~ 100 МБ каждые десять минут). На этом общем диске слишком много папок и вложенных папок. Теперь на общем диске заканчивается свободное место.

Пожалуйста, помогите мне, как я могу найти, какая папка увеличивается. Я попробовал приведенную ниже команду, чтобы получить размер подкаталогов на общем диске. Но мне нужно сравнить вывод, и это займет слишком много времени, чтобы найти, если мне не повезло.

du -sh --maxdepth=1  

Подскажите, пожалуйста, есть ли другой способ найти транзакцию данных в этой файловой системе?

3 ответа

Ты можешь попробовать iotop инструмент, который показывает вам использование ввода-вывода процессами (другими словами, какие процессы используют ваш диск), чтобы вы могли отследить, какой процесс занимает место. Другой способ заключается в использовании inotify (часть inotify-tools) который может отслеживать каталоги на предмет изменений.

Или простой способ заключается в использовании du следующим образом.

Определите следующие псевдонимы:

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

Затем перейдите в подозрительную папку и запустите big чтобы показать вам самые большие файлы и каталоги в текущем каталоге. Или беги big-files чтобы увидеть самые большие файлы рекурсивно в текущей папке.

Примечание: для правильной работы на OSX/BSD (как sort не имеет -h ), установить sort от coreutils или удалить -h от ls и использовать sort -nr вместо.

Найдите недавно измененные файлы, используя команду ниже. Он покажет файлы, измененные в течение последних десяти минут, внутри FOLDER. Увеличьте параметр -mmin -10, чтобы увидеть, как FOLDER был изменен во времени. Смотрите man, найдите и ищите -mtime и -mmin для полной информации:

sudo find FOLDER -xdev -type f -mmin -10 -ls

Другая ситуация, когда удаленные файлы все еще занимают место на диске, которое не восстанавливается из-за процессов, все еще использующих их. В этом случае определите процессы, используя удаленные файлы, и завершите их для восстанавливаемого пространства:

sudo lsof | grep deleted

Поиск размера здесь не поможет, так как много маленьких файлов могут занимать столько же места или больше, чем большой файл. Проверьте номера инодов тоже. Также, чтобы получить размер для всех папок внутри FOLDER:

sudo find FOLDER -xdev -type d | xargs -I DIR du -sm DIR | sort -nk1

Я обычно использую ncdu чтобы изучить использование дискового пространства, если ваша постоянно увеличивающаяся папка не блокирует вашу систему или сканирование ncdu, вы сможете найти, посмотрев, какие папки выглядят необычно большими.

Другие вопросы по тегам