Я использую git-application, расширение для DVCS git, которое предназначено для обработки больших файлов. Он сильно использует символические ссылки. Собственно большие файлы перемещаются в .git/annex
каталог, и исходные файлы связаны с ним символической ссылкой.
Мне не хватает места на диске, и мне нужно очистить его и посмотреть, что занимает все мое пространство. Обычно я использую инструмент для использования диска, например ncdu
, Баобаб или Filelight. Однако они рассматривают символическую ссылку как практически пустую и учитывают только файл, на который она указывает, как использующий любое пространство. Это означает, что когда я использую git-application, он не показывает места, используемого в основных каталогах, и много места, используемого в каталоге .git / application. Это бесполезно.
Есть ли какая-либо программа использования диска (графическая или ncurses) для Linux (apt-get installable будет легко, которая способна (с помощью параметров или без) подсчитывать символическую ссылку как использование пространства, которое использует исходный файл? У многих есть параметры для разного поведения жестких ссылок, поэтому имеет смысл, что некоторые должны
(Я знаю, что подсчет символических ссылок, поскольку использование пробела имеет недостатки, такие как двойной подсчет пробела, битые символические ссылки и т. Д. Но это нормально для моих целей)
В 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-application есть собственные решения этой проблемы. ты можешь использовать:
git annex info --fast *
... чтобы получить фактическое использование диска (и многое другое) из файлов непосредственно из git-приложения. он также может работать с удаленными репозиториями, что очень полезно:
git annex info --fast --not --in here .
... даст вам объем данных, который не в текущем репозитории например.
я также использовал ncdu с этим небольшой патч с хорошими результатами.
форум разработчиков, обсуждающий это Эквивалент "du" в приложении? и есть другие предложения, например du -L
, гаду и размеры которые были упомянуты в других ответах здесь.
git-application содержит список связанное программное обеспечение включая некоторые инструменты использования диска, поддерживающие git-app - гаду и размеры.
Есть ли какая-либо программа использования диска (графическая или ncurses) для Linux (apt-get installable будет легко, которая способна (с помощью параметров или нет) подсчитывать символическую ссылку как использующую пространство, которое использует исходный файл?
TL; DR: du -akL mydirectory | xdiskusage -aq
Я также использую git-приложение и иметь такую же потребность.
GNU du
как и у большинства инструментов GNU есть много вариантов, включая:
‘-L’ ‘--dereference’
Разыменовать символические ссылки (показывать дисковое пространство, используемое файлом или каталогом, на который указывает ссылка, вместо пространства, используемого ссылкой).
Кроме того, есть отличный, легкий инструмент представления использования диска под названием xdiskusage.
Вы можете использовать его полностью графически: выбрать папку или выбрать полную файловую систему, чтобы включить представление свободного пространства. Вы можете щелкнуть, использовать стрелки и клавишу Enter, чтобы увеличить отображение дерева, скрыть некоторые поддеревья. Это очень практично, просто, быстро, даже на удаленном дисплее.
У него есть приятное свойство: вы также можете передать ему результат вызова du, аналогичный du -ak
.
Итак, вы можете:
du -akL mydirectory | xdiskusage
Я всегда использую этот вариант, когда -a
означает показать все файлы (не только каталоги), и -q
сделайте все намного быстрее, убрав ползунок прогресса:
du -akL mydirectory | xdiskusage -aq
Изображение из http://xdiskusage.sourceforge.net/ пользователя Bill Spitzak.
apt-get installable
В Debian и производных, включая Ubuntu:
sudo apt-get install coreutils xdiskusage
(У вас наверняка уже установлено coreutils.)