Полезности для создания резервных копий виртуальных машин

Все об администрировании Windows NT/2000/2003/2008/2012 Server (в т.ч. R2) серверов. Групповые политики, домены, безопасность и пр. То, чего не найдешь в бескрайних просторах Интернета. Решения тех проблем, которые не решаются типовыми ответами, которые можно получить в техподдержке Майкрософта - а именно: переустановить продукт или купить какой-ть другой лицензионный диск.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1503
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Полезности для создания резервных копий виртуальных машин

Сообщение UncleFather »

Полезные скрипты и команды для создания резервных копий виртуальных машин

  • Скрипт для создания бэкапа Хост платформы и виртуальной машины. Скрипт взят из статьи Автоматизируем процесс создания бекапов серверных систем 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

Все эти скрипты можно скачать в одном архиве:

BackUping Virtual Machines.rar
(3.69 КБ) 313 скачиваний

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение