监视Windows目录大小

时间:2008-10-08 15:18:59

标签: java ruby perl powershell groovy

我正在寻找可以监视Windows目录的大小和文件数量的东西。我说的是一些服务器和几千个文件夹(数百万个文件)。

要求:

  • 关于X在Y时间内增加大小的通知
  • 关于X的文件计数超过Y时间的通知
  • 大小和文件数的历史图表(或至少保存一段时间内的快照数据)
  • 所有这些都在一组目录及其子目录

我更喜欢免费的解决方案,但也希望能指出正确的方向。如果我们自己写,我们将如何做呢?可用的语言是Ruby,Groovy,Java,Perl或PowerShell(因为我会写它)。

4 个答案:

答案 0 :(得分:4)

有几种解决方案,包括一些免费解决方案。我使用的一些包括:

NagiosBig Brother

快速谷歌搜索可能会找到更多。

答案 1 :(得分:3)

您可能需要查看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}

回复斯科特的评论: 当然。你可以用while循环包装它

$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监视器执行此操作,您可以安排定期运行,但要使脚本在后台运行,以上操作。您甚至可以添加一些数据库访问代码以将结果记录到数据库,或将其记录到文件中......您想要什么。

答案 2 :(得分:1)

您可以通过PowerShell和WMI实现这一目标。您需要某种类似SQL Express的数据库后端。但我同意像Polymon这样的工具是一种更好的方法。可能造成差异的一件事是规模问题。您需要在1台服务器上监控1个文件夹还是数百个?

答案 3 :(得分:0)

http://sourceforge.net/projects/dirviewer/ - DirViewer是一个轻量级的纯Java应用程序,用于目录树视图和递归磁盘使用统计,使用JGoodies - 外观和外观类似于Windows XP。