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. Новая версия бэкапа отличается следующими характеристиками по сравнению с первой версией:
Как и раньше, командлеты для 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 этапа:
Будь то отдельная папка или отдельный том. Это не относится только к 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 этапа:
[↑] [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. В следующей (или следующих) рассмотрим вопросы управления этими политиками и вопросы каталогизации/ротации архивов.
Позитив. Прошу раскрыть тему VSS. Также разместить ссылку на мой блог и поправить слово "Коментарий" на предмет grammar nazi. Как-то так.
Не совсем понял, что есть Bare Metal Recovery (BMR). Что дает эта опция? Если это простой способ добавления в политику всех томов, необходимых для восстановления ОС на "голое железо", а так же SystemState, то непонятно - почему после указания опции BMR в объекте политики бэкапировнаия, не происходит автоматичского изменения этих зависимых опций объекта политики. Так, например, после добавления опции BMR в объект политики бэкапирования, можно (добавлять в)/(удаялть из) оного объекта политики опцию SystemState. Или надо понимать, так, что опция BMR имеет приоритет над ростальными опциями и не смотря на то, что остальные опции могут иметь некие разннобразные значения, они будут проигнорированы? Является ли бэкап с опцией BMR каким-то особым видом бэкапа, которым можно пользоваться только при восстановлении на "голое железо" или из него так же можно восстанвливать отдельные файлы и папки, как из любого другого бэкапа, который был выполнен без указания этой опции?
> Или надо понимать, так, что опция BMR имеет приоритет ага, именно. > из него так же можно восстанвливать отдельные файлы и папки, как из любого другого бэкапа, который был выполнен без указания этой опции? Сам BMR восстанавливает только ОС, без остальных данных. Но вы в BMR можете добавить и другие данные, которые будут бакупиться. Может, вот, поможет: http://wbadmin.info/articles/howto-bare-metal-restores-windows-server-2008-backup.html
Comments: