Анализатор использования диска Linux, который действует как символические ссылки, являются реальными файлами
Я использую git-annex, расширение для DVCS git, которое предназначено для обработки больших файлов. Это делает интенсивное использование символических ссылок. Фактически большие файлы перемещаются в .git/annex
каталог и исходные файлы имеют ссылки на них там.
Мне не хватает места на диске, и мне нужно очистить и посмотреть, что использует все мое пространство. Обычно я бы использовал инструмент использования диска, как ncdu
, Баобаб или Filelight. Однако они рассматривают символическую ссылку как по существу пустую и учитывают только тот файл, на который она указывает, используя любое пространство. Это означает, что когда я использую git-annex, он не показывает места, используемого в основных каталогах, и много места, используемого в каталоге.git/annex. Это не полезно.
Есть ли какая-либо (графическая или ncurses) основанная на Linux программа для использования дисков (apt-get installlable была бы просто, способная (с помощью опций или нет) считать символическую ссылку как занимающую место, которое занимает исходный файл? У многих есть варианты для различного поведения для жестких ссылок, поэтому имеет смысл, что некоторые должны
(Я знаю, что подсчет символических ссылок, поскольку использование пробела имеет недостатки, такие как подсчет пробела дважды, битые символические ссылки и т. Д. Но это нормально для моих целей)
4 ответа
GNU du имеет параметр --dereference, который разыменовывает символические ссылки при вычислении использования диска. Однако du отказывается считать один и тот же пробел дважды, что может нарушить условия вашей ситуации:
% mkdir foo bar baz
% dd if=/dev/zero of=foo/test bs=1024 count=10000
10000+0 records in
10000+0 records out
10240000 bytes (10 MB) copied, 0.0176239 s, 581 MB/s
% (cd bar; ln -s ../foo/test)
% (cd baz; ln -s ../foo/test)
% du -hc bar baz
4.0K bar
4.0K baz
8.0K total
% du -hc --dereference bar baz
9.8M bar
4.0K baz
9.8M total
Если у вас нет нескольких символических ссылок на одну и ту же цель, я думаю, --dereference делает то, что вы хотите.
В настоящее время у git-annex есть собственные решения этой проблемы. ты можешь использовать:
git annex info --fast *
... чтобы получить фактическое использование диска (и больше) из файлов непосредственно из git-annex. он также может работать с удаленными репозиториями, что очень полезно:
git annex info --fast --not --in here .
... даст вам объем данных, которых нет в текущем хранилище, например.
Я также использовал ncdu с этим небольшим патчем с хорошими результатами.
на верхнем форуме, обсуждающем это, "du" эквивалентно приложению? и имеет больше предложений, как du -L
, gadu и размеры, которые были упомянуты в других ответах здесь.
В git-приложении есть список сопутствующего программного обеспечения, включая некоторые инструменты использования дисков, поддерживающие git-приложение, - gadu и размеры.
Есть ли какая-либо (графическая или ncurses) основанная на Linux программа для использования дисков (apt-get installlable, будет ли easyie способной (с помощью опций или нет) считать символическую ссылку как занимающую место, которое занимает исходный файл?
TL; DR: du -akL mydirectory | xdiskusage -aq
Длинный ответ: объедините две мощные комбинируемые программы
Я также использую git-annex и имею такую же потребность.
Справочный инструмент для определения использования диска: GNU du
GNU du
как и большинство инструментов GNU, имеет много опций, в том числе:
'-L' '--dereference'
Разыменовывать символические ссылки (показать дисковое пространство, используемое файлом или каталогом, на который указывает ссылка, вместо пространства, используемого ссылкой).
Справочный инструмент для интерактивного изучения и увеличения дерева использования диска: xdiskusage
Кроме того, есть отличный, легкий инструмент представления использования диска под названием xdiskusage.
Вы можете использовать его полностью графически: выберите папку или полную файловую систему, чтобы включить представление свободного пространства. Вы можете нажать, использовать стрелки и клавишу Enter, чтобы увеличить масштаб отображения дерева, скрыть некоторые поддеревья. Это очень практично, просто, быстро, даже на удаленном дисплее.
Объедините их и получайте прибыль!
У него есть приятное свойство, которое вы также можете передать ему в результате вызова du, аналогичного du -ak
,
Итак, вы можете сделать:
du -akL mydirectory | xdiskusage
Я всегда использую этот вариант, где -a
означает показать все файлы (не только каталоги), и -q
сделайте все намного быстрее, убрав слайдер прогресса:
du -akL mydirectory | xdiskusage -aq
Изображение с http://xdiskusage.sourceforge.net/ Билла Спитцака.
apt-get?
apt-get устанавливается
На Debian и его производных, включая Ubuntu:
sudo apt-get install coreutils xdiskusage
(Вы наверняка уже установили coreutils.)