Backup hyper-v резервное копирование
Простейший и безотказный способ резервного копирования — остановка работы виртуальных машин, копирование виртуальных дисков, запуск виртуальных машин по расписанию. Для остановки и запуска можно использовать microsoft powershell, для копирования лучше использовать отдельный, желательно внешний или сетевой, жесткий диск. А также включение по расписанию их планировщика заданий windows.
Для выполнения всех действий понадобится создание трех файлов, в папке c:\backup\
c:\backup\names.txt — в него вписаны названия виртуальных машин.
1 2 3 4 |
tmg-srv dc-srv av-srv soft-srv |
C:\backup\script.ps1 — скрипт остановки и запуска виртуальных машин, названия берет из c:\backup\names.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
$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 — скрипт для остановки виртуальных машин, копирования и запуска снова.
1 2 3 4 5 6 7 |
%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