Общее использование диска для конкретного пользователя

12

Я хотел бы видеть общее использование диска для себя в определенной файловой системе. Я выполнил команду

du -h ~my_user_name

Тем не менее, это список всех каталогов, принадлежащих my_user_name. Я хотел бы получить общую сумму всей этой информации. Какой вариант подходит для прохождения? Я старался

du -h -c ~my_user_name

но это не сработало.

Alex
источник

Ответы:

11

Переход -sк duограничит вывод только элементами, указанными в командной строке.

du -sh ~
Игнасио Васкес-Абрамс
источник
9

Du покажет вам только итоги по папкам, а не по пользователям.

Это может сработать, если вы хотите указать общий размер, скажем, /home/example_user/и если только этот example_user имеет файлы в этой папке. Если у других пользователей есть файлы в них, это приведет не к размеру всех принадлежащих вам файлов, а к общему размеру всех файлов в этой папке.

Чтобы получить информацию о пользователе, либо:

  1. Если у вас включена квота , используйте эти команды.
  2. Используйте find, чтобы пройтись по всем каталогам, в которые вы хотите сосчитать ваши файлы. Используйте uid, чтобы выбрать только ваши файлы и сохранить ассоциативный массив в awk для подсчета итогов.

find /path/to/search/ -user username_whos_files_to_count -type f -printf "%s\n" | awk '{t+=$1}END{print t}'

Обратите внимание, это использует GNU найти конкретное расширение.

  • Первая команда просматривает все файлы и каталоги в /path/to/search/.
  • -type fубедитесь, что вы выбираете только файлы, в противном случае вы также рассчитываете размер каталогов. (Попробуйте создать пустую папку. Вероятно, она будет использовать 4k дискового пространства).
  • -user username_whos_files_to_count выбирает результаты только от одного пользователя
  • -printf "%s\n" напечатает размер.

Если вы просто запустите первую часть этого, вы получите список чисел. Это размеры файлов. (Все остальное удаляется, печатается только размер благодаря команде% s печати.)

Затем мы можем добавить все эти цифры, чтобы получить сводку. В примере это делается с помощью awk.

Hennes
источник
+1 хороший момент, спасибо! ответ ниже на самом деле был именно то, что я хотел. различие между пользователем и папкой не имеет большого значения в моем случае
Алекс
Ницца. du -schэто простая команда, часто используемая. Отследить, кому что принадлежало, когда все было смешано, намного сложнее, хотя это можно сделать в один прием. Я использовал это однажды, но у меня были проблемы с реконструкцией сегодня.
Хеннес
Мне очень помогло, Идеальное объяснение
Бабин Лонстон,
2

Чтобы найти все использование для конкретного пользователя, хорошая команда:

find -user $USER -type f -exec du -chs {} +

Вы можете дополнительно изменить в зависимости от конкретных потребностей, например, я часто хочу обобщить использование по папкам, и хорошо работает следующее:

find . -maxdepth 1 -user $USER -type d ! -path . -exec du -chs {} +

Он находит только каталоги на одном уровне, ограничивает пользователя, исключает родительский каталог и печатает каждый каталог и сводку в конце.

asherkhb
источник