Contents of this directory is archived and no longer updated.

2 недели назад я выступал на рижском IT Pro с темой бэкапа в Windows Server 2008 R2 с помощью PowerShell. Доклад получится немного скомканный и на ряд вопров из зала я не смог ответить, т.к. эти вопросы требуют достаточно много времени на формулировку ответа. Поэтому я здесь подниму этот вопрос снова и постараюсь ответить на неотвеченные вопросы.

Я думаю, что уже все знают про отсутствие ntbackup.exe в системах начиная с Windows Server 2008. Его теперь заменяет отдельный системный компонент Windows Backup (или Server Backup) и, который, устанавливается как компонент сервера в оснастке Server Manager. Первая версия Server Backup была достаточно грубой и примитивной. Она позволяла бэкапить только тома целиком блочным методом без возможности выбора отдельных файлов и папок. Блочный метод работает на уровень ниже, чем файловая система, поэтому никакой речи о файлах быть не могло. Так же ему требовался выделенный том под хранение бэкапа и при инициализации тома под бэкапы, он форматировался. Бэкап SystemState производился отдельно и его нельзя было включить в состав бэкапа отдельного тома. Иными словами, первая версия была непотребна чуть более чем полностью, поэтому в отношении него говорить просто не о чем.

С выходом Windows Server 2008 R2 ситуация немного улучшилась. После тысяч жалоб от покупателей и срачей на форумах в новой системе добавился бэкап на уровне файловой системы (как и ntbackup), сохранив и улучшив первоначальную версию Server Backup. Новая версия бэкапа отличается следующими характеристиками по сравнению с первой версией:

  • Добавлена возможность бэкапа файлов и папок
  • Добавлена возможность комбинирования объектов бэкапа. Например, к бэкапу отдельных папок и файлов можно добавлять бэкап SystemState
  • Теперь можно делать инкрементальный бэкап для SystemState (включено по умолчанию)
  • Улучшенная поддержка PowerShell

Как и раньше, командлеты для Server Backup поставляются в виде отдельной оснастки, которая подключается командой:

Add-PSSnapin Windows.ServerBackup

И все командлеты для бэкапа будут иметь префикс WB (от Windows Backup):



Мы видим достаточно приличное количество командлетов и часть из них мы используем для работы. Все задания бэкапов в ServerBackup являются политиками бэкапа. Следовательно, командлетом New-WBPolicy мы будем создавать каждое задание бэкапа:

[↑] [Administrator] $pol = New-WBPolicy
[↑] [Administrator] $pol


Schedule            :
BackupTargets       :
VolumesToBackup     :
FilesSpecsToBackup  :
FilesSpecsToExclude :
BMR                 : False
SystemState         : False
VssBackupOptions    : VssCopyBackup



[↑] [Administrator]

Мы создали объект новой политики бэкапа, который имеет ряд свойств. Эти свойства по названиям уже отражают своё назначение. Давайте сначала выберем объекты бэкапа. Например, добавим какую-нибудь папку, которую мы захотим бэкапить. Новые объекты бэкапа создаются в 2 этапа:

  1. Создание самого объекта командой New-WBFileSpec
  2. Добавление этого объекта в политику бэкапа командой Add-WBFileSpec

Будь то отдельная папка или отдельный том. Это не относится только к Bare Metal Recovery (полный бэкап системного тома, SystemState и всех системных файлов) и к самому SystemState. Они могут сразу добавляться в политику.

[↑] [Administrator] $source1 = New-WBFileSpec -FileSpec "C:\Users"
[↑] [Administrator] $source1 | ft -a

FilePath  FileName IsRecursive IsIncludeSpec
--------  -------- ----------- -------------
C:\Users\ *               True          True


[↑] [Administrator] $exclusion = New-WBFileSpec -FileSpec "C:\Users\vpodans" -Exclude
[↑] [Administrator] $exclusion | ft -a

FilePath          FileName IsRecursive IsIncludeSpec
--------          -------- ----------- -------------
C:\Users\vpodans\ *               True         False


[↑] [Administrator] $source2 = New-WBFileSpec -FileSpec "D:\Users" -NonRecursive
[↑] [Administrator] $source2 | ft -a

FilePath  FileName IsRecursive IsIncludeSpec
--------  -------- ----------- -------------
D:\Users\ *              False          True


[↑] [Administrator] $source1, $source2, $exclusion | Add-WBFileSpec -Policy $pol
[↑] [Administrator] $pol


Schedule            :
BackupTargets       :
VolumesToBackup     :
FilesSpecsToBackup  : {C:\Users\*, D:\Users\*}
FilesSpecsToExclude : {C:\Users\vpodans\*}
BMR                 : False
SystemState         : False
VssBackupOptions    : VssCopyBackup



[↑] [Administrator]

Первой командой мы задали бэкап всей папки C:\Users. Второй командой мы посмотрели объект этой точки. Как видно из таблички, эта папка будет бэкапить полностью включая все подпапки. Но я не хочу бэкапить папку профиля одного из пользователей. Для этого в командлете New-WBFileSpec есть ключ –Exclude, который исключит эту папку из бэкапа. В следующей строке это видно по состоянию свойства IsIncludeSpec = $false. И чтобы исключить рекурсивную обработку папки (т.е. нам нужно бэкапить содержимое только текущей папки не трогая подпапки совсем) для неё достаточно указать ключ –NonRecursive. под каждую категорию вы можете добавлять пути для бэкапа через запятую в одной команде. Но для каждой категории надо писать новую команду. В конце мы видим, что наша политика уже обросла какими-то данными. Если мы захотим сюда добавить ещё бэкап целого тома или физического диска, то нам уже придётся работать с командлетами Get/Add-WBDisk и Get/Add-WBVolume:

[↑] [Administrator] Get-WBDisk


DiskName       : WDC WD3200JS-00PDB0 ATA Device
DiskNumber     : 1
DiskId         : d5fae841-0000-0000-0000-000000000000
TotalSpace     : 320072933376
FreeSpace      : 3591163904
Volumes        : {New Volume (S:\VM\Core), Camelot Share-2 (F:)}
ContainsBackup : False
BackupVolumeId : 00000000-0000-0000-0000-000000000000
Properties     : Dynamic, ValidTarget

<...>
[↑] [Administrator] $disk = Get-WBDisk | ?{$_.disknumber -eq 1}
[↑] [Administrator] Get-WBVolume -Disk $disk


VolumeLabel : New Volume
MountPath   : S:\VM\Core
MountPoint  : \\?\Volume{06d04bb0-1949-11de-a731-001fd08fc2f1}
FileSystem  : NTFS
Property    : ValidSource
FreeSpace   : 2133585920
TotalSpace  : 18875416576

VolumeLabel : Camelot Share-2
MountPath   : F:
MountPoint  : \\?\Volume{62bda1e6-b515-4102-b03f-40b7896ab0f3}
FileSystem  : NTFS
Property    : ValidSource
FreeSpace   : 1453031424
TotalSpace  : 301192970240



[↑] [Administrator]

Командлет Get-WBDisk отобразит нам все физические диски, которые подключены к системе (с учётом аппаратного рейда, разумеется). Если захотим добавить этот диск в бэкап, то отфильтровываем через Where-Object (или просто вопросительный знак) и добавляем его в политику командой Add-WBDisk. Get-WBDisk нам так же потребуется и для просмотра логических томов, поскольку Get-WBVolume в качестве аргумента принимает только объекты, полученные от команды Get-WBDisk. Т.е. сначала выбираем диск и только потом просматриваем нужные тома. И отфильтровав нужный том добавляем в политику, например:

[↑] [Administrator] Get-WBVolume -Disk $disk


VolumeLabel : New Volume
MountPath   : S:\VM\Core
MountPoint  : \\?\Volume{06d04bb0-1949-11de-a731-001fd08fc2f1}
FileSystem  : NTFS
Property    : ValidSource
FreeSpace   : 2133585920
TotalSpace  : 18875416576

VolumeLabel : Camelot Share-2
MountPath   : F:
MountPoint  : \\?\Volume{62bda1e6-b515-4102-b03f-40b7896ab0f3}
FileSystem  : NTFS
Property    : ValidSource
FreeSpace   : 1453031424
TotalSpace  : 301192970240



[↑] [Administrator] $volume = Get-WBVolume -Disk $disk | ?{$_.volumelabel -eq "new volume"}
[↑] [Administrator] Add-WBVolume -Policy $pol -Volume $volume


VolumeLabel : New Volume
MountPath   : S:\VM\Core
MountPoint  : \\?\Volume{06d04bb0-1949-11de-a731-001fd08fc2f1}
FileSystem  : NTFS
Property    : ValidSource
FreeSpace   : 2133585920
TotalSpace  : 18875416576



[↑] [Administrator] $pol


Schedule            :
BackupTargets       :
VolumesToBackup     : {New Volume (S:\VM\Core)}
FilesSpecsToBackup  : {C:\Users\*, D:\Users\*}
FilesSpecsToExclude : {C:\Users\vpodans\*}
BMR                 : False
SystemState         : False
VssBackupOptions    : VssCopyBackup



[↑] [Administrator]

Если я вдруг не захочу уже бэкапить добавленный том, то его можно спокойно удалить (фактически командами Remove-WB* можно удалить что угодной из политики):

Remove-WBVolume -Policy $pol -Volume $volume

Теперь настало время выбрать точки, в которые мы будем копировать наш бэкап. Точки назначения добавляются в бэкап тоже задаются в 2 этапа:

  1. New-WBBackupTarget — создаёт объект точки назначения бэкапа
  2. Add-WBBackupTarget — добавляет эту точку в политику бэкапа
[↑] [Administrator] $target = New-WBBackupTarget -VolumePath "F:"
[↑] [Administrator] $target = New-WBBackupTarget -VolumePath "E:"
[↑] [Administrator] Add-WBBackupTarget -Policy $pol -Target $target


Label                  : Camelot Share-1
WBDisk                 :
WBVolume               : Camelot Share-1 (E:)
Path                   : \\?\Volume{ca6dbf07-14ad-11de-937f-806e6f6e6963}
TargetType             : Volume
InheritAcl             : False
PreserveExistingBackup : False



[↑] [Administrator] $pol


Schedule            :
BackupTargets       : {E:}
VolumesToBackup     : {}
FilesSpecsToBackup  : {C:\Users\*, D:\Users\*}
FilesSpecsToExclude : {C:\Users\vpodans\*}
BMR                 : False
SystemState         : False
VssBackupOptions    : VssCopyBackup



[↑] [Administrator]

Вы так же можете указать бэкап сразу в сеть. Для этого в команде New-WBBackupTarget вместо параметра –VolumePath использовать параметр –NetworkPath и за ним уже указывать UNC путь к сетевой папке. Однако, следует учесть несколько нюансов:

  • При бэкапе в сеть исходный размер копируемых данных неизвестен, в связи с чем будет катастрофически расти фрагментация в сетевой папке
  • В сети вы можете поддерживать только одну актуальную копию бэкапа. Последующие бэкапы в эту же папку будут перезаписывать предыдущие архивы
  • Вы не можете одновременно делать бэкап на локальный том или диск и в сеть.

Примечание: хелп заявляет, что бэкап можно одновременно копировать на несколько томов/дисков. Мне ещё неизвестна полностью природа всего происходящего и только могу констатировать факт, что физически бэкап копируется только на первый указанный том или диск.

Теперь у нас есть 2 варианта: начать выполнение бэкапа немедленно, или регистрация нашей политике в системе для периодического выполнения в автоматическом режиме (по внутреннему шедулеру). В первом случае достаточно выполнить команду:

Start-WBBackup –Policy $pol

или зашедулить командой Set-WBSchedule:

[↑] [Administrator] Set-WBSchedule -Policy $pol -Schedule "10.08.2009 21:00"

tresdiena, 2009. gada 7. oktobri 21:00:00


[↑] [Administrator] $pol


Schedule            : {2009.10.07. 21:00:00}
BackupTargets       : {E:}
VolumesToBackup     : {}
FilesSpecsToBackup  : {C:\Users\*, D:\Users\*}
FilesSpecsToExclude : {C:\Users\vpodans\*}
BMR                 : False
SystemState         : False
VssBackupOptions    : VssCopyBackup



[↑] [Administrator] Set-WBPolicy –Policy $pol

И командой Set-WBPolicy наша политика регистрируется в системе. Шедулинг следует указывать в следующей форме:

Month.Day.Year Hours:Minutes

И теперь каждый день в 21:00 будет выполняться наше задание.

Сегодня мы рассмотрели основные моменты создания политики бэкапа в Windows Server 2008 R2 с использованием PowerShell. В следующей (или следующих) рассмотрим вопросы управления этими политиками и вопросы каталогизации/ротации архивов.


Share this article:

Comments:

Ruslan V. Karmanov

Позитив. Прошу раскрыть тему VSS. Также разместить ссылку на мой блог и поправить слово "Коментарий" на предмет grammar nazi. Как-то так.

shserg.ru

Не совсем понял, что есть Bare Metal Recovery (BMR). Что дает эта опция? Если это простой способ добавления в политику всех томов, необходимых для восстановления ОС на "голое железо", а так же SystemState, то непонятно - почему после указания опции BMR в объекте политики бэкапировнаия, не происходит автоматичского изменения этих зависимых опций объекта политики. Так, например, после добавления опции BMR в объект политики бэкапирования, можно (добавлять в)/(удаялть из) оного объекта политики опцию SystemState. Или надо понимать, так, что опция BMR имеет приоритет над ростальными опциями и не смотря на то, что остальные опции могут иметь некие разннобразные значения, они будут проигнорированы? Является ли бэкап с опцией BMR каким-то особым видом бэкапа, которым можно пользоваться только при восстановлении на "голое железо" или из него так же можно восстанвливать отдельные файлы и папки, как из любого другого бэкапа, который был выполнен без указания этой опции?

Vadims Podāns

> Или надо понимать, так, что опция BMR имеет приоритет ага, именно. > из него так же можно восстанвливать отдельные файлы и папки, как из любого другого бэкапа, который был выполнен без указания этой опции? Сам BMR восстанавливает только ОС, без остальных данных. Но вы в BMR можете добавить и другие данные, которые будут бакупиться. Может, вот, поможет: http://wbadmin.info/articles/howto-bare-metal-restores-windows-server-2008-backup.html

Comments are closed.