Как известно, утилита 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-файлы и не может проводиться на ленточные накопители. В принципе, все команды выше можно собрать в один скрипт и запускать на серверах для настройки резервного копирования.