6

我正在寻找能够随着时间的推移监视 Windows 目录的大小和文件计数的东西。我说的是少数服务器和几千个文件夹(数百万个文件)。

要求:

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

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

4

4 回答 4

4

有几种解决方案,包括一些免费的。我合作过的一些包括:

纳吉奥斯老大哥

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

于 2008-10-08T15:31:47.260 回答
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 监视器,我不会这样做,您可以安排它定期运行,但是对于在后台运行的脚本,上述方法可以工作。您甚至可以添加一些数据库访问代码来将结果记录到数据库中,或者将其记录到文件中......无论您想要什么。

于 2008-10-08T15:47:17.367 回答
1

您当然可以使用 PowerShell 和 WMI 完成此操作。您将需要某种数据库后端,例如 SQL Express。但我同意像 Polymon 这样的工具是更好的方法。可能会产生影响的一件事是规模问题。您需要监视 1 个服务器上的 1 个文件夹还是数百个文件夹?

于 2008-10-08T18:43:15.890 回答
0

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

于 2008-10-08T18:21:49.897 回答