web-dev-qa-db-ja.com

ボリュームシャドウコピー(VSS)とDiskshadow.exeを使用して実行中のHyper-Vイメージのコマンドラインバックアップ

コマンドプロンプトを使用して、実行中のHyper-V仮想マシンを最小限のダウンタイムでバックアップする必要があります。バックアップは、別のローカルディスクまたはリモート共有に保存する必要があります。

8
Doug Luxem

以下は、VSSを使用してHyper-Vをバックアップし、スナップショットを作成するために使用されるサンプルスクリプトです。 VSSをサポートしないゲストオペレーティングシステムは、スナップショット期間中に保存された状態になります。

このサンプルは、E:\ VSディレクトリにあるイメージをF:\ VSバックアップのローカルディレクトリにバックアップします。 。これらの場所は、ニーズに合わせて調整する必要があります。ソースドライブごとに、VSSスナップショットにボリュームを追加する必要があります。

Diskshadow.exeコマンドのドキュメントは Technetで入手可能 です。

これら3つのファイルをそれぞれディレクトリにコピーして、HyperVBackup.cmdを実行します。

HyperVBackup.cmd:

REM Use the diskshadow command to support "live" Hyper-V backup
REM   though VSS

diskshadow /s diskshadow_script.txt > HyperVBackup_LOG.txt


REM Remove CAB files which are generated to support the exporting
REM   of disk shadow copies (not required here)

del *.cab /Q

diskshadow_script.txt:

# Remove any existing shadow copies from crashed or errored scripts
# WARNING: this will conflict with other backup software if running
# at the same time.
delete shadows all

# Use a persistent context so we can "map" a drive
set context persistent

# Log everything
set verbose on


# ***TODO*** Change this drive letter to match the location of your
# VHD files
add volume E: alias HyperV1

# Add additional volumes if needed
#add add volume H: alias HyperV2

# Create the shadow copy
create

# Expose each shadowed volume as a drive
# ***TODO*** Make sure the exposed drive letter is available and used
# in the backup script
expose %HyperV1% S:

# Expose additional volumes as needed
#expose %HyperV2% T:

# Execute the backup script (robocopy)
exec HyperVBAckup_exec.cmd

# clean up the shadow copy images
delete shadows all

HyperVBackup_exec.cmd:

REM This is the script to perform the actual copy of the files

REM Use robocopy with the source set to the expose shadow drives
REM The drives are read-only, so don't try to reset the archive bit
REM **TODO** Set the destination location for the backups

robocopy S:\VS "F:\VS Backup" /MIR /NP /XF *.ISO /R:2 /W:5


REM Dummy command to clear the robocopy errorlevel

verify >nul
8
Doug Luxem