'-------------------------------------------------
' c:\temp\>cscript logcopy.vbs
'-------------------------------------------------
Option Explicit
'-------------------------------------------------
'ログ保存場所
Const COPY_DIR = ".\logs\"
'過去何日分か(過去3日分)
Dim TARGET_DATE: TARGET_DATE = DateAdd("d", -3, Date)
'-------------------------------------------------
'対象
'-------------------------------------------------
Dim WEB_SERVERS: WEB_SERVERS = Array( _
"192.168.1.1", _
"192.168.1.2", _
"192.168.1.3", _
"192.168.1.4", _
"192.168.1.5", _
"192.168.1.6")
Dim LOG_PATH: LOG_PATH = "\d$\mysystem\WebLog"
'-------------------------------------------------
'処理
'-------------------------------------------------
Call InitDir(COPY_DIR)
Dim server
' V5サーバのログコピー
For Each server In WEB_SERVERS
Call CopyFiles(server, COPY_DIR & server, LOG_PATH)
Next
'-----------------
'ファイルコピー
'指定ディレクトリのファイルをコピーする
'-----------------
Sub CopyFiles(server, dest, targetPath)
Dim path: path = "\\" & server & targetPath
WScript.Echo "CopyFiles path= " & path
Call InitDir(dest)
Dim objFso:Set objFso = CreateObject("Scripting.FileSystemObject")
Dim objShell: Set objShell = CreateObject("Shell.Application")
Dim objFolder : Set objFolder = objShell.Namespace(path)
Dim objFolderItems: Set objFolderItems = objFolder.Items()
Dim objItem
Dim idx
For idx = 0 To objFolderItems.Count - 1
Set objItem = objFolderItems.Item(idx)
If objItem.IsFolder = True Then
Call CopyFiles(server, objFso.BuildPath(dest, objItem.Name), objFso.BuildPath(targetPath, objItem.Name))
Else
If IsCopyFile(objItem) = True Then
Call objFso.CopyFile(objItem.path, objFso.BuildPath(dest, objItem.Name))
End If
End If
Next
End Sub
'-----------------
'ファイルコピー判定
'過去N日分のファイルをコピーする
'-----------------
Function IsCopyFile(fileObj)
If fileObj.ModifyDate >= TARGET_DATE Then
IsCopyFile = True
Else
IsCopyFile = False
End If
End Function
'-----------------
'ディレクトリがなければ作成
'-----------------
Sub InitDir(target)
Dim objFso:Set objFso = CreateObject("Scripting.FileSystemObject")
If objFso.FolderExists(target) = False Then
objFso.Createfolder (target)
End If
End Sub
GDDとは「Gut's Driven Development」の略です。簡単にいうとガッツ駆動方式のシステム開発です。
えぇまぁ、私の開発スタイルです。このBlogでは、そんなシステム開発の作業で発見したことを記録していきます。
(Google Developer Daysとはなんの関係ありません。)
2014年10月1日水曜日
[他]複数のWebサーバからログをコピーする
負荷分散などでWebサーバが複数台あるシステムがあります。で、トラブル発生→ログ収集だ。となった時、いちいちファイルログファイルをコピーするのは非常に面倒です。ということで、Windowsマシンなら大体動作するVBScriptで、複数のサーバからログをコピーするスクリプトを作ってみました。
ログのコピーと言っても、大量になっちゃうので、当日を含む過去4日に更新されたタイムスタンプのもの。という縛りをつけてみました。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿