1. Резервное копирование.
1.1. Устанавливаем компоненты встроенного Windows Server Backup:
PS c:\> Install-WindowsFeature Windows-Server-Backup -IncludeManagementTools
1.2. Создаём бекап всех машин на сетевом хранилище \\192.168.1.100\VMBackup:
1.2.1. Создаём задание бэкапа:
PS c:\> $profiles = New-WBPolicy
1.2.2. Создаём и добавляем в задание бэкапа архивируемую папку:
PS c:\> $VirtualMachines = Get-WBVirtualMachine PS c:\> Add-WBFileSpec -Policy $profiles -FileSpec $VirtualMachines
Если нужно добавить какую-то определённую ВМ то пишем надо будет подправить команду выше: PS c:\> $VirtualMachines = Get-WBVirtualMachine | ? VMName -eq TestVM01 , где TestVM01 — имя ВМ, которую будем бекапить.
1.2.3. Указываем локальный том, на который будет копироваться архив:
PS c:\> $target = New-WBBackupTarget -NetworkPath "\\192.168.1.100\VMBackup" PS c:\> Add-WBBackupTarget -Policy $profiles -Target $target
1.2.4. Выполняем бэкап:
PS c:\> Start-WBBackup -Policy $profiles
1.3. Мой скрипт для планировщика задач wbadmin-backup.ps1:
# Константы и переменные $Date = Get-Date -format yyyy.MM.dd $Path = "\\192.168.1.100\VMBackup" # Устанавливаем пути $BackupPath = $Path + "\" + $Date $LogPath = $BackupPath + "\BackupLogs\" # Создаём папки бекапа и логов New-Item -ItemType Directory -Force -Path $BackupPath New-Item -ItemType Directory -Force -Path $LogPath # Создаём задание бэкапа $policy = New-WBPolicy # Указываем локальный том, на который будет копироваться архив $target = New-WBBackupTarget -NetworkPath $BackupPath # Создаем список виртуальных машин $VirtualMachines = Get-WBVirtualMachine # Собираем политику Add-WBVirtualMachine -Policy $policy -VirtualMachine $VirtualMachines Add-WBBackupTarget -Policy $policy -Target $target # Запускаем бекап Start-WBBackup -Policy $policy # Перемещение логов Move-Item -Path "c:\Windows\Logs\WindowsServerBackup\Backup*" -Destination ($LogPath)
Скрипт бекапит все ВМ на хосте и переносить к ним логи из папки c:\Windows\Logs\WindowsServerBackup\ .
2. Восстановление из копии.
2.1. Получаем список версий бекапов:
PS c:\> Get-WBBackupSet VersionId : 11/26/2021-18:45 BackupTime : 11/26/2021 10:45:12 AM BackupTarget : C: RecoverableItems : Volumes, Applications, Files Volume : {VMs (D:)} Application : {HyperV TestVM01} VssBackupOption : VssCopyBackup SnapshotId : 5f5788ea-7c1c-4812-818f-2148df0c453d BackupSetId : de4b71dc-df16-4900-91f3-bc65d6bb54e9 VersionId : 11/26/2021-19:03 BackupTime : 11/26/2021 11:03:13 AM BackupTarget : C: RecoverableItems : Volumes, Applications, Files Volume : {VMs (D:)} Application : {HyperV TestVM01} VssBackupOption : VssCopyBackup SnapshotId : fb828ce0-243f-41e9-948b-bef8f2e19054 BackupSetId : 53b2e1e6-9b35-4154-8580-429ec74fb3b9
Копируем отсюда VersionId: 11/26/2021-18:45 . Он нам понадобиться для следующей команды.
2.2. Заносим необходимый BackupSet в переменную:
PS c:\> $set = Get-WBBackupSet | ? VersionId -eq 11/26/2021-18:45
2.3. Заносим компоненты всех ВМ в переменную:
PS c:\> $vms = ($set.Application | ? Identifier -eq HyperV).Component
Для восстановления конкретной ВМ необходимо последнюю команду модернизировать следующим образом: PS c:\> $vms = ($set.Application | ? Identifier -eq HyperV).Component | ? VMName -eq TestVM01 , где TestVM01 — имя восстанавливаемой ВМ.
2.4. Запускаем восстановление:
PS c:\> Start-WBHyperVRecovery -BackupSet $set -VMInBackup $vms
3. Удаление резервных копий.
3.1. В случае если мы хотим удалить все бекапы то набираем команду:
PS c:\> Remove-WBBackupSet
3.2. В случае если мы хотим удалить определенную версию, то:
3.2.1. Получаем список версий бекапов:
PS c:\> Get-WBBackupSet VersionId : 11/27/2021-20:22 BackupTime : 11/27/2021 12:22:56 PM BackupTarget : C: RecoverableItems : Volumes, Applications, Files Volume : {VMs (D:)} Application : {HyperV TestVM01, HyperV TestVM02} VssBackupOption : VssCopyBackup SnapshotId : 6e7ab46d-4dae-4ee7-9292-d5dee3cd1332 BackupSetId : e02fca1c-5cde-410e-a6fc-11024b351024
Копируем отсюда VersionId: 11/27/2021-20:22 . Он нам понадобиться для следующей команды.
3.2.2. Удаляем резервную копию определенной версии:
PS c:\> Get-WBBackupSet | ? VersionId -eq 11/27/2021-20:22 | Remove-WBBackupSet