2009年12月23日水曜日

全文索引フォルダのサイズを調べる


全文索引を作成すると、アプリケーションのnsfファイルがあるフォルダに.ft で終わるフォルダが作成されます。

アプリケーションのファイル名が names.nsf の場合、フォルダ名は names.ft となります。わかりやすいですね。

これまでサイズを調べるには、アプリケーションのプロパティや Windows の Explorer でフォルダのプロパティを参照していました。
ただサーバー内のすべての全文索引について調べるには、これでは効率が悪すぎます。

そこでツールを作ろうと思い立ったわけです。

「添付ファイルを作成する」を有効にしている場合など.ftフォルダのサイズが大きいものではギガバイト単位に膨れ上がったりします。

Domino6.5.3の頃、そんなアプリケーションで誰かが全文検索した時にサーバーがクラッシュするといった不具合が時々あり、試しに「添付ファイルを作成する」を無効にして.ftフォルダのサイズを抑制したところ、全文検索時のクラッシュが再現しなくなった、といったこともありました。

下のプログラムは.ftフォルダのサイズを調べるツールとして作成したものです。Windows 2000 Serverで稼働しました。

Dim FSO, FLD, TF
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set FLD = FSO.GetFolder(".")
Set TF = FSO.CreateTextFile(FLD.Path & "\ftlist.csv", True)
ScanFolder FSO.GetFolder(FLD.Path), FSO, TF
TF.Close()
Set TF = Nothing
Set FLD = Nothing
set FSO = Nothing
WScript.Echo("全文索引フォルダのリストを出力しました。")

Sub ScanFolder(objFolder, objFSO, objFile)
 Const DQ = """"
 For Each o in objFolder.subFolders
  if Ucase(Right(o.Name, 3)) = ".FT" Then
   objFile.WriteLine DQ & o.Path & DQ & "," & DQ & o.Size & DQ
  Else
   ScanFolder objFSO.GetFolder(o), objFSO, objFile
  End If
 Next
End Sub

上記プログラムを ftlist.vbs などとして Notes\Data フォルダに保存します。

コマンドプロンプトから実行すると、notes\dataフォルダ配下の .ft フォルダの名前とそのサイズを ftlist.csv へ出力します。

ただ、ディレクトリリンクがあっても、その先まで追いかけませんが、そこは即席手抜きツールなのでご勘弁。

0 件のコメント:

コメントを投稿