Контроль размера каталога Windows - PullRequest
6 голосов
/ 08 октября 2008

Я ищу что-то, что будет отслеживать каталоги Windows на предмет размера и количества файлов с течением времени. Я говорю о нескольких серверах и нескольких тысячах папок (миллионах файлов).

Требования:

  • Уведомление об увеличении размера X с течением времени Y
  • Уведомление об увеличении Х числа файлов за время Y
  • Исторический график (или, по крайней мере, сохранение данных снимков во времени) размера и количества файлов
  • Все это для набора каталогов и их дочерних каталогов

Я бы предпочел бесплатное решение, но также был бы признателен за указание в правильном направлении. Если бы мы написали свои собственные, как бы мы поступили так? Доступные языки: Ruby, Groovy, Java, Perl или PowerShell (так как я бы их написал).

Ответы [ 4 ]

4 голосов
/ 08 октября 2008

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

Nagios а также Большой Брат

Быстрый поиск в Google может найти больше.

3 голосов
/ 08 октября 2008

Возможно, вы захотите взглянуть на PolyMon - решение для мониторинга систем с открытым исходным кодом. Он позволяет вам создавать собственные мониторы на любом языке .NET и создавать собственные мониторы PowerShell.

Он хранит данные на сервере SQL Server и предоставляет графики. Для вашей цели вам просто понадобится скрипт, который получит размер каталога и количество файлов. Что-то вроде:

$size = 0
$count = 0
$path = '\\unc\path\to\directory\to\monitor'
get-childitem -path $path -recurse | Where-Object {$_ -is [System.IO.FileInfo]} | ForEach-Object {$size += $_.length; $count += 1}

В ответ на комментарий Скотта: Конечно. Вы могли бы обернуть это в цикл времени

$ESCkey  = 27
Write-Host "Press the ESC key to stop sniffing" -foregroundcolor "CYAN"
$Running=$true

While ($Running)
    { 
         if ($host.ui.RawUi.KeyAvailable) {
         $key = $host.ui.RawUI.ReadKey("NoEcho,IncludeKeyUp,IncludeKeyDown")
            if ($key.VirtualKeyCode -eq $ESCkey) { 
             $Running=$False
            }
         #rest of function here 
        } 

Я бы не стал этого делать для монитора PowerShell, который вы можете запланировать для периодического запуска, но для сценария, запускаемого в фоновом режиме, вышеприведенное будет работать. Вы могли бы даже добавить некоторый код доступа к базе данных, чтобы записать результаты в базу данных, или записать его в файл ... что бы вы ни хотели.

1 голос
/ 08 октября 2008

Вы, безусловно, можете сделать это с помощью PowerShell и WMI. Вам понадобится какой-нибудь DB-сервер, например, SQL Express. Но я согласен, что такой инструмент, как Polymon, является лучшим подходом. Единственное, что может повлиять на ситуацию - это проблема масштаба. Вам нужно следить за 1 папкой на 1 сервере или сотнями?

0 голосов
/ 08 октября 2008

http://sourceforge.net/projects/dirviewer/ - DirViewer - это легкое чистое Java-приложение для просмотра дерева каталогов и статистики рекурсивного использования диска с использованием JGoodies-Looks, похожего на Windows XP.

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