Backup hyper-v резервное копирование
Простейший и безотказный способ резервного копирования — остановка работы виртуальных машин, копирование виртуальных дисков, запуск виртуальных машин по расписанию. Для остановки и запуска можно использовать microsoft powershell, для копирования лучше использовать отдельный, желательно внешний или сетевой, жесткий диск. А также включение по расписанию их планировщика заданий windows.
Для выполнения всех действий понадобится создание трех файлов, в папке c:\backup\
c:\backup\names.txt — в него вписаны названия виртуальных машин.
tmg-srv
dc-srv
av-srv
soft-srv
C:\backup\script.ps1 — скрипт остановки и запуска виртуальных машин, названия берет из c:\backup\names.txt
$waitstart = 20
$waitshutdown = 20
if ($args[1] -match "0") {
$inputfile=get-content $args[0]
foreach ($guest in $inputfile) {
write-host "Starting $guest"
$vm = gwmi -namespace root\virtualization -query "select * from msvm_computersystem where elementname='$guest'"
$result = $vm.requeststatechange(2)
if ($result.returnvalue -match "0") {
start-sleep -s $waitstart
write-host ""
write-host "$guest is started" -foregroundcolor green
write-host ""
}
else {
write-host ""
write-host "unable to start $guest" -foregroundcolor red
write-host ""
}}}
if ($args[1] -match "1") {
$inputfile=get-content $args[0]
foreach ($guest in $inputfile) {
write-host "shutting down $guest"
$vm = gwmi -namespace root\virtualization -query "select * from msvm_computersystem where elementname='$guest'"
$vmname = $vm.name
$vmshut = gwmi -namespace root\virtualization -query "SELECT * FROM Msvm_ShutdownComponent WHERE SystemName='$vmname'"
$result = $vmshut.InitiateShutdown("$true","no comment")
if ($result.returnvalue -match "0") {
start-sleep -s $waitshutdown
write-host ""
write-host "no error while shutting down $guest"
write-host "shutdown of $guest completed" -foregroundcolor green
write-host ""}
else {
write-host ""
write-host "unable to shutdown $guest" -foregroundcolor red
write-host ""
}}}
else {
write-host "USAGE: to shutdown VMs," -nonewline; write-host ".\managehyperV.ps1 c:\backup\names.txt 1" -foregroundcolor yellow
write-host "USAGE: to start VMs," -nonewline; write-host ".\managehyperV.ps1 c:\backup\names.txt 0" -foregroundcolor yellow
}
По умолчанию в powershell запрещен запуск сторонних скриптов. Поэтому нужно его либо «разблокировать» в свойствах либо запустить powershell и изменить политику доступа с помощью команды Set-ExecutionPolicy RemoteSigned.
C:\backup\scriptcmd.bat — скрипт для остановки виртуальных машин, копирования и запуска снова.
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\backup\script.ps1 c:\backup\names.txt 1
copy /Y "C:\Virtual\tmg-srv.vhd" "e:\tmg-srv.vhd"
copy /Y "C:\Virtual\dc-srv.vhd" "e:\dc-srv.vhd"
copy /Y "C:\Virtual\av-srv.vhd" "e:\av-srv.vhd"
copy /Y "C:\Virtual\soft-srv.vhd" "e:\soft-srv.vhd"
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\backup\script.ps1 c:\backup\names.txt 0
copy /Y — копирует файлы без подтверждения.
Далее нужно добавить новое задание:
Пуск > выполнить > Taskschd.msc
Создать задачу >
Общие: Имя: Backup; Выполнять вне зависимости от регистрации пользователя
Триггеры: еженедельно, начать в 3:00 по ВС
Действия: Запуск программы C:\backup\scriptcmd.bat