Полезные скрипты и команды для создания резервных копий виртуальных машин
-
Скрипт для создания бэкапа Хост платформы и виртуальной машины. Скрипт взят из статьи Автоматизируем процесс создания бекапов серверных систем Windows Server 2008 R2, 2012 R2, с помощью скрипта для PowerShell и немного подредактирован для возможности создания резервных копий на локальных дисках и для того, чтобы в состав бэкапа включалась виртуальная машина.
Автоматизация создания бекапа
Код: Выделить всё
########################################################################### # Описание: Автоматизация создания бекапа системы (Windows Backup Server) # # Автор: Jakonda # # Дата создания: 21.07.17 # ########################################################################### # # Переменные для работы бекапа GPO # # Каталог расположения архиватора 7-Zip $7z = "C:\Program Files\7-Zip\7z.exe" # Зададим алиас для запуска 7-Zip set-alias SZ $7z # Текущая дата $CurrentDate = get-date -format dd.MM.yyyy # Имя домен-контроллера $DC_Name = "SRV-DC1" # Имя виртуальной машины которую нужно бэкапить $VirtMachine = "WinServer2008R2_1" # Путь к сетевой папке, в который хранить бекапы #$Path_Net_Drive = "\\192.168.1.3\All_Backups\DC\WSB\" + $DC_Name $PathArch = "E:" # Удалять бекапы старше ... дней (Указывать период в днях) $StoreBackup_Period = 7 # # # Функция для создания структуры каталогов Function CheckPath ($Path) { $Path_Exists = Test-Path -Path $Path If ($Path_Exists -eq $False) {New-Item $Path -type directory} } # # Функция удаления старых бекапов Function RemoveOldBackup ($Path, $Extention, $CountDays) { $LastWrite = Get-Date.Add-Days(-$CountDays) $FoundFiles = Get-Childitem $Path -Include $Extension -Recurse | Where{$_.LastWriteTime -le "$LastWrite"} Foreach ($File in $FoundFiles){ Remove-Item $File.FullName | Out-Null } } # Блок процедуры создания бекапа системы # # Подключаем оснастку Windows Server Backup Add-PSSnapin Windows.Serverbackup -ErrorAction SilentlyContinue # Создаем задание бекапа $policy = New-WBPolicy # Определяем в переменную путь бекапа $target = New-WBBackupTarget -VolumePath $PathArch # Добавляем в задание бекапить Bare Mental Recovery (Восстановление исходного состояния системы) Add-WBBareMetalRecovery -Policy $policy # Добавляем в задание бекапить System State (Состояние системы) Add-WBSystemState -policy $policy # Добавляем в задание бекапить критические области на жестком диске Add-WBVolume -Policy $policy -Volume (Get-WBVolume -CriticalVolumes) # Добавляем в задание виртуальную машину Get-WBVirtualMachine | ? VMName -eq $VirtMachine | Add-WBVirtualMachine -Policy $policy # Добавляем в задание параметр VSS (Теневой копии) Set-WBVssBackupOptions -policy $policy -VssCopyBackup # Добавляем в задание путь бекапа Add-WBBackupTarget -Policy $policy -Target $target # # Создаем каталог для бекапов CheckPath $PathArch | Out-Null # # Запускаем создание бекапа Start-WBBackup -Policy $policy # # Проверяем результат выполнения бекапа # Если бекап завершился успешно if ((Get-WBSummary).LastBackupResultHR -eq 0) { # Переименовываем папку с созданным бекапом в формат текущей даты Rename-Item $target\WindowsImageBackup "$CurrentDate" | Out-Null # Если архиватор 7-Zip присутствует, то архивируем бекап If (Test-Path -Path $7z) { SZ a "$target\$CurrentDate.7z" -m0=LZMA2:d=96m:fb=128 -mx=9 -mmt=2 "$target\$CurrentDate" | Out-Null } else { exit } # Подчищаем за собой, удаляем исходную папку бекапа Remove-Item $target\$CurrentDate -recurse -force | Out-Null # Удаляем старые архивы бекапа в папке RemoveOldBackup $target "*.7z" $StoreBackup_Period }
-
Скрипт для создания моментальных снимков виртуальных машин и хранения их в течение заданного времени.
Запуск этого скрипта нужно добавить в планировщик задач, задав требуемую периодичность запуска.Код: Выделить всё
$VM01 = "WinServer2008R2_1" $StoreDays = -60 Get-VMSnapshot -VMName $VM01| Where-Object {$_.CreationTime -lt (Get-Date).AddDays($StoreDays) } | Remove-VMSnapshot Get-VM $VM01 | Checkpoint-VM -SnapshotName "Daily Snapshot $((Get-Date).toshortdatestring())"
-
Скрипт для очистки теневых копий и резервных копий системы:
Код: Выделить всё
diskshadow /s DeleteShadows.scr wbadmin delete catalog -quiet wbadmin delete backup -keepVersions:0 -quiet
Предварительно в папке с этим скриптом необходимо создать файл DeleteShadows.scr со следующим содержанием:
Код: Выделить всё
delete shadows ALL
-
Команда для немедленного прекращения выполнения всех задач архивации системы:
Код: Выделить всё
WBADMIN stop job
Все эти скрипты можно скачать в одном архиве: