Powershell и ServerBackup в Windows 2008

PowerShell LogoКак известно, утилита ntbackup в Windows 2008 заменена утилитой ServerBackup. При этом механизм работы штатного средства резервного копирования изменился. Кроме этого утверждается о существовании некоторого набора командлетов PoSh для резервного копирования. К сожалению, информации на эту тему совсем немного. Это и послужило поводом для этой записи.

Для начала необходимо установить эту утилиту. Например, следующим образом:

servermanagercmd -i powershell
servermanagercmd -i backup
servermanagercmd -i backup-tools

После этого мы можем загрузить оснастку windows.serverbackup, которая даст нам доступ к командлетам резервного копирования.

PS c:\users\administrator\> add-pssnapin windows.serverbackup

Ну и наконец, список доступных командлетов:

PS c:\users\administrator\> get-command -pssnapin windows.serverbackup | select name
Name
----
Add-WBBackupTarget
Add-WBVolume
Get-WBBackupTarget
Get-WBDisk
Get-WBPolicy
Get-WBSchedule
Get-WBSummary
Get-WBVolume
New-WBBackupTarget
New-WBPolicy
Remove-WBBackupTarget
Remove-WBPolicy
Remove-WBVolume
Set-WBPolicy
Set-WBSchedule

К сожалению, информации об этих командлетах совсем немного. Ниже я опишу процесс создания расписания запуска процесс резервного копирования системного диска. Для начала создадим политику резервного копирования:

PS C:\Users\Administrator\> $pol = new-wbpolicy
PS C:\Users\Administrator\> $pol
Schedule                          BackupTargets                     VolumesToBackup
--------                          -------------                     ---------------

Как можно увидеть, политика создана, но не созданы параметры, непосредственно связанные с резервным копированием. Для начала создадим диск, куда будет происходить резервное копирование:

PS C:\Users\Administrator\> get-wbdisk
DiskName       : Virtual HD ATA Device
DiskNumber     : 0
DiskId         : 83657d9e-0000-0000-0000-000000000000
TotalSpace     : 11047550976
FreeSpace      : 1967808512
Volumes        : {Microsoft.Windows.ServerBackup.Commands.WBVolume}
Properties     : None
ContainsBackup : False
BackupVolumeId : 00000000-0000-0000-0000-000000000000

DiskName : Virtual HD ATA Device
DiskNumber : 1
DiskId : a51e5a08-0000-0000-0000-000000000000
TotalSpace : 10888077312
FreeSpace : 10803392512
Volumes : {Microsoft.Windows.ServerBackup.Commands.WBVolume}
Properties : ValidTarget
ContainsBackup : False
BackupVolumeId : 00000000-0000-0000-0000-000000000000

PS C:\Users\Administrator\> $disk = get-wbdisk | where {$_.disknumber -eq 1}
PS C:\Users\Administrator\> $disk
DiskName : Virtual HD ATA Device
DiskNumber : 1
DiskId : a51e5a08-0000-0000-0000-000000000000
TotalSpace : 10888077312
FreeSpace : 10803392512
Volumes : {Microsoft.Windows.ServerBackup.Commands.WBVolume}
Properties : ValidTarget
ContainsBackup : False
BackupVolumeId : 00000000-0000-0000-0000-000000000000

Теперь надо создать задачу для резервного копирования (backup target):

PS C:\Users\Administrator\> $tgt = new-wbbackuptarget -disk $disk -label "Disk c: backup"
PS C:\Users\Administrator\> $tgt | fl
Label                  : Disk c: backup
WBDisk                 : Microsoft.Windows.ServerBackup.Commands.WBDisk
Path                   :
TargetType             : Volume
PreserveExistingBackup : False[powershell]

И добавить эту задачу в нашу политику:

[powershell]PS C:\Users\Administrator\> add-wbbackuptarget -policy $pol -target $tgt
Label                  : Disk c: backup
WBDisk                 : Microsoft.Windows.ServerBackup.Commands.WBDisk
Path                   :
TargetType             : Volume
PreserveExistingBackup : False

После чего добавляем диски, которые будем бэкапировать:

PS C:\Users\Administrator\> get-wbvolume -allvolumes
VolumeLabel :
MountPath   : C:
MountPoint  : ?Volume{944dceb1-e654-11dd-9725-806e6f6e6963">?Volume{944dceb1-e654-11dd-9725-806e6f6e6963}
FileSystem  : NTFS
Property    : Critical, ValidSource
FreeSpace   : 1966133248
TotalSpace  : 11044651008

VolumeLabel : Backup
MountPath : E:
MountPoint : ?Volume{cd0397d5-02ab-11de-8e03-0003ffccc37a">?Volume{cd0397d5-02ab-11de-8e03-0003ffccc37a}
FileSystem : NTFS
Property : ValidSource
FreeSpace : 10801631232
TotalSpace : 10885267456

PS C:\Users\Administrator\> $vol = get-wbvolume -allvolumes | where {$_.mountpath -eq "C:"}
PS C:\Users\Administrator\> add-wbvolume -policy $pol -volume $vol
VolumeLabel :
MountPath : C:
MountPoint : ?Volume{944dceb1-e654-11dd-9725-806e6f6e6963">?Volume{944dceb1-e654-11dd-9725-806e6f6e6963}
FileSystem : NTFS
Property : Critical, ValidSource
FreeSpace : 1966133248
TotalSpace : 11044651008

Ну и наконец зададим время запуска операции резервного копирования. Надо иметь ввиду что дата  задаётся в американском формате, т.е. в виде MM/DD/YYYY.

PS C:\Users\Administrator\> $shed = [datetime]"02.24.2009 23:35:00"
PS C:\Users\Administrator\> $shed
24 февраля 2009 г. 23:35:00

PS C:\Users\Administrator\> set-wbschedule -policy $pol -schedule $shed
24 февраля 2009 г. 23:35:00

PS C:\Users\Administrator\> $pol | fl
Schedule : {24.02.2009 23:35:00}
BackupTargets : {Microsoft.Windows.ServerBackup.Commands.WBBackupTarget}
VolumesToBackup : {Microsoft.Windows.ServerBackup.Commands.WBVolume}

Теперь сделаем нашу политику активной:

PS C:\Users\Administrator\> set-wbpolicy -policy $pol
Warning!
Do you want to format Virtual HD ATA Device?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): y

Теперь осталось подождать пока запустится резервное копирование. Во время процесса мы можем за ним наблюдать:

PS C:\Users\Administrator\> get-wbsummary
NextBackupTime                  : 25.02.2009 23:35:00
NumberOfVersions                : 0
LastSuccessfulBackupTime        : 01.01.0001 0:00:00
LastSuccessfulBackupTargetPath  :
LastSuccessfulBackupTargetLabel :
LastBackupTime                  : 01.01.0001 0:00:00
LastBackupTarget                :
LastBackupResultHR              : 0
LastBackupResultDetailedHR      : 0
CurrentOperationStatus          : BackupInProgress
DetailedMessage                 :

После завершения процесса увидим следующее:

PS C:\Users\Administrator\> get-wbsummary
NextBackupTime                  : 25.02.2009 23:35:00
NumberOfVersions                : 1
LastSuccessfulBackupTime        : 24.02.2009 23:35:05
LastSuccessfulBackupTargetPath  : ?Volume{cd0397fe-02ab-11de-8e03-0003ffccc37a">?Volume{cd0397fe-02ab-11de-8e03-0003ffccc37a}
LastSuccessfulBackupTargetLabel : Disk c: backup
LastBackupTime                  : 24.02.2009 23:35:05
LastBackupTarget                : Disk c: backup
LastBackupResultHR              : 0
LastBackupResultDetailedHR      : 0
CurrentOperationStatus          : NoOperationInProgress
DetailedMessage                 :

Вручную из PoSh резервное копирование не запускается, только через расписание. Первое резервное копирование делается полным, все последующие – разностными. Резервное копирование ведётся в vhd-файлы и не может проводиться на ленточные накопители. В принципе, все команды выше можно собрать в один скрипт и запускать на серверах для настройки резервного копирования.

Leave a Reply

Your email address will not be published. Required fields are marked *