Command line backup of running Hyper-V images using Volume Shadow Copies (VSS) and Diskshadow.exe
I need to backup running Hyper-V virtual machines with minimal downtime via a command prompt. Backups should be stored on another local disk or remote share.
Below are sample scripts used to backup Hyper-V using VSS to create a snapshot. Guest operating systems that do not support VSS will be put into a saved state during the snapshot period.
This sample backs up images located on the E:\VS directory to a local directory at F:\VS Backups. These locations will need to be adjusted to fit your needs. For each source drive, an additional volume will need to be added to the VSS snapshot.
Documentation on the diskshadow.exe command is available on Technet.
Copy each of these three files into a directory and run 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