2008-10-08 17 views
6

मैं ऐसा कुछ ढूंढ रहा हूं जो आकार के लिए विंडोज निर्देशिकाओं और समय के साथ फ़ाइल गिनती की निगरानी करेगा। मैं कुछ हद तक सर्वर और कुछ हज़ार फ़ोल्डर्स (लाखों फाइलें) के बारे में बात कर रहा हूं।मॉनीटरिंग विंडोज निर्देशिका आकार

आवश्यकताएँ:

  • Y समय के साथ आकार में एक्स वृद्धि पर अधिसूचना
  • एक्स के
  • ऐतिहासिक रेखांकन (या कम से कम बचत स्नैपशॉट डेटा समय के साथ) वाई समय के साथ फ़ाइल संख्या में वृद्धि पर अधिसूचना आकार और फ़ाइल गिनती
  • यह सब निर्देशिकाओं का एक सेट पर और अपने बच्चे निर्देशिका

मैं एक मुफ्त समाधान पसंद करूंगा लेकिन सही दिशा में इशारा करते हुए भी सराहना करता हूं। अगर हम खुद को लिखना चाहते थे, तो हम ऐसा करने के लिए कैसे जाएंगे? रुबी, ग्रोवी, जावा, पर्ल, या पावरशेल होने वाली उपलब्ध भाषाएं (क्योंकि मैं इसे लिख रहा हूं)।

+0

मैं इसे सी # में बहुत आसानी से कर सकता हूं (जैसा कि मैंने एक्सप किया है) लेकिन यह आपकी मदद नहीं करता है, क्षमा करें। इस तकनीक में एक ऐसी सेवा लिखना शामिल है जो डेटा एकत्र करता है। तब आवश्यक होने पर आपका ऐप डेटा तक पहुंच सकता है। – Craig

+0

क्रेग, क्या आप सी # में इसे कैसे करना है पोस्ट करना चाहते हैं? मैं सी # या .NET के साथ बिल्कुल परिचित नहीं हूं लेकिन मुझे नहीं लगता कि समाधान के रूप में उपयोग करने के लिए यह 100% असंभव है, बस पहली पसंद नहीं! – Instantsoup

+0

आम तौर पर यदि आप इसे सी # में कर सकते हैं तो आप इसे पावरहेल में कर सकते हैं। – EBGreen

उत्तर

3

आप PolyMon पर एक नज़र डालना चाहते हैं, जो एक ओपन सोर्स सिस्टम निगरानी समाधान है। यह आपको किसी भी .NET भाषा में कस्टम मॉनीटर लिखने की अनुमति देता है, और आपको कस्टम पावरशेल मॉनीटर बनाने की अनुमति देता है।

यह SQL सर्वर बैक एंड पर डेटा संग्रहीत करता है और ग्राफ़िंग प्रदान करता है। आपके उद्देश्य के लिए, आपको केवल एक स्क्रिप्ट की आवश्यकता होगी जो निर्देशिका आकार और फ़ाइल गिनती प्राप्त करेगी। कुछ की तरह:

$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 मॉनिटर, जो आपको समय-समय पर चलाने के लिए निर्धारित कर सकते हैं के लिए में लपेट सकता है, लेकिन एक स्क्रिप्ट पृष्ठभूमि में चलाने के लिए, ऊपर काम करेगा। डेटाबेस में परिणामों को लॉग इन करने के लिए आप कुछ डेटाबेस एक्सेस कोड भी जोड़ सकते हैं, या इसे फ़ाइल में लॉग ऑन कर सकते हैं .. आप जो भी चाहते हैं।

+0

बहुत अच्छा! पावरशेल में, क्या इसे किसी प्रकार के लूप में रखा जा सकता है जो लगातार चल रहा है? –

+0

मैंने अपना जवाब संपादित किया (टिप्पणी में उत्तर देने के लिए पर्याप्त जगह नहीं है। –

+0

बहुत अच्छा स्टीवन! धन्यवाद! –

4

कुछ मुफ्त सहित कई समाधान हैं। कुछ है कि मैं के साथ काम किया में शामिल हैं:

Nagios और Big Brother

एक त्वरित गूगल खोज शायद अधिक जानकारी प्राप्त कर सकते हैं।

0

http://sourceforge.net/projects/dirviewer/ - DirViewer निर्देशिका वृक्ष दृश्य और रिकर्सिव डिस्क उपयोग आंकड़ों के लिए एक हल्का शुद्ध जावा एप्लिकेशन है, जेजीडीज-लुक्स लुक का उपयोग करके और विंडोज एक्सपी के समान महसूस करता है।

1

आप निश्चित रूप से इसे PowerShell और WMI के साथ पूरा कर सकते हैं। आपको एसक्यूएल एक्सप्रेस जैसे कुछ प्रकार के डीबी बैकएंड की आवश्यकता होगी। लेकिन मैं मानता हूं कि पॉलिमॉन जैसे टूल एक बेहतर दृष्टिकोण है। एक चीज जो भिन्नता पैदा कर सकती है वह पैमाने का मुद्दा है। क्या आपको 1 सर्वर या सैकड़ों पर 1 फ़ोल्डर की निगरानी करने की आवश्यकता है?

+0

उत्तर देने के लिए संपादित ... सर्वर के मुट्ठी भर, हजारों फ़ोल्डरों (लाखों फाइलें)। – Instantsoup

संबंधित मुद्दे