WIN1@Codename

Codename

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

vssadminを使用しての個別バックアップ方法

Windows2008ServerR2より前のバージョンでは、バックアップではファイル単位の指定ができませんでした。
そこでvssadminコマンドを利用してファイル単位のバックアップの実現方法を紹介します。

設定はCドライブにあるWin7.vhdファイルをオンライン状態でバックアップするというものです。

おおまかな説明となりますが、要はシャドウコピーを取得したリストをvssadminコマンドを利用して取得し、最新のシャドウコピーファイルをバックアップファイルとしてコピー保存するものです。

コードは以下のとおり。

Dim strDrive As String = "C"
Dim strFrom As String = "\Hyper-V\Win7\Win7.vhd"
Dim strTo As String = "F\:Backup\Hyper-V\Win7\Win7.vhd"

'シャドウコピーコマンドで取得済みのシャドウコピーリストを取得
Dim objProcessStartInfo As New System.Diagnostics.ProcessStartInfo()
objProcessStartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
objProcessStartInfo.RedirectStandardInput = False
objProcessStartInfo.RedirectStandardOutput = True
objProcessStartInfo.UseShellExecute = False
objProcessStartInfo.CreateNoWindow = True
objProcessStartInfo.Arguments = "/c vssadmin list shadows"
Dim objProcess As System.Diagnostics.Process = System.Diagnostics.Process.Start(objProcessStartInfo)
Dim strCommandRes As String = objProcess.StandardOutput.ReadToEnd
objProcess.WaitForExit()

'最新のシャドウコピーパスを正規表現にて取得
Dim objArrayList As New ArrayList
Dim objRegex As New Regex("作成時刻: (?<Date>\d+/\d+/\d+ \d+:\d+:\d+)\r\n.+\r\n.+\((?<Drive>\w):\).+")
Dim objMatch As Match = objRegex.Match(strCommandRes, RegexOptions.IgnoreCase)
While objMatch.Success
    If strDrive = objMatch.Groups("Drive").Value Then
objArrayList.Add(objMatch.Groups("Date").Value)
    End If
    objMatch = objMatch.NextMatch()
End While

Dim dteNewest As Date
For i As Integer = 0 To objArrayList.Count - 1
    Dim dteUpdate As Date = objArrayList(i)
    If dteNewest < dteUpdate Then
dteNewest = dteUpdate
    End If
Next

'シャドウコピーをバックアップファイルとして保存
Dim dteGMTUpdate As Date = DateAdd(DateInterval.Hour, -9, dteNewest)
Dim strGMTUpdate As String = dteGMTUpdate.ToString("yyyy.MM.dd-HH.mm.ss")
Dim strFolderPath As String = "\\localhost\" & strDrive & "$\@GMT-" & strGMTUpdate
Dim strFilePath As String = strFolderPath & strFrom
My.Computer.FileSystem.CopyFile(strFilePath, strTo, True)

以上となります。

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://codename2010.blog11.fc2.com/tb.php/113-41720132
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。