Как быстро получить размер каталога (и содержимого) в Cygwin Perl - PullRequest
2 голосов
/ 25 ноября 2010

У меня есть Perl-скрипт, который отслеживает использование нескольких общих сетевых дисков Windows. В настоящее время он контролирует свободное место на нескольких сетевых дисках с помощью команды cygwin df. Я также хотел бы добавить индивидуальное использование диска. Когда я использую

du -s | grep total

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

Итак, я хотел бы знать, есть ли более быстрый способ получить использование папки, которое не требует вечности.

Ответы [ 2 ]

3 голосов
/ 25 ноября 2010

du -s работает путем рекурсивного запроса размера каждого каталога и файла. Если ваша реализация файловой системы не хранит это общее значение где-либо, это единственный способ определить использование диска. Поэтому вам следует выяснить, какую файловую систему и драйверы вы используете, и посмотреть, есть ли способ напрямую запросить эти данные. В противном случае, вы, вероятно, SOL и вам придется потратить время, необходимое для запуска du.

2 голосов
/ 25 ноября 2010

1) Проблема, возможно, заключается в том, что они сетевые диски - локальные du в большинстве случаев приемлемо быстрые. Вы делаете du на том сервере, где находится диск? Если нет, попробуйте подойти к проблеме с другой точки зрения - запустите агент на каждом сервере, на котором размещены диски, который рассчитывает локальные сводки du, а затем отчитывает итоги центральному процессу (IPC или хек, записав отчет в файл в той же файловой системе общего ресурса).

2) Если один из дисков занимает значительно большую долю пространства (в среднем), чем остальные, вы можете оптимизировать, выполнив du для всех, кроме «самого большого», а затем рассчитать самый большой вычитая сумму других из df результатов

3) Кроме того, если честно, это звучит как неоптимальное решение с точки зрения дизайна - хотя вы указали, что это не ваш выбор, я настоятельно рекомендую вам опубликовать вопрос о том, как можно улучшить дизайн в рамках параметры, которые вы задали (для сайта ServerFault, а не для SO)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...