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