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

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

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

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

du -sh --maxdepth=1  

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

решение1

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

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

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

sudo lsof | grep deleted

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

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

решение2

Вы можете попробовать 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вместо этого .

решение3

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

Связанный контент