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):

[↑] [Administrator] Add-PSSnapin windows.serverbackup [↑] [Administrator] gcm *-wb* CommandType Name Definition ----------- ---- ---------- Cmdlet Add-WBBackupTarget Add-WBBackupTarget [-Policy] [-Target... Cmdlet Add-WBBareMetalRecovery Add-WBBareMetalRecovery [-Policy] [-V... Cmdlet Add-WBFileSpec Add-WBFileSpec [-Policy] [-FileSpec] ... Cmdlet Add-WBSystemState Add-WBSystemState [-Policy] [-Verbose... Cmdlet Add-WBVolume Add-WBVolume [-Policy] [-Volume] [-Verbos... Cmdlet Get-WBBareMetalRecovery Get-WBBareMetalRecovery [-Policy] [-V... Cmdlet Get-WBDisk Get-WBDisk [-Verbose] [-Debug] [-ErrorAction [-Ve... Cmdlet Get-WBJob Get-WBJob [[-Previous] ] [-Verbose] [-De... Cmdlet Get-WBPolicy Get-WBPolicy [-Editable] [-Verbose] [-Debug] [-E... Cmdlet Get-WBSchedule Get-WBSchedule [-Policy] [-Verbose] [... Cmdlet Get-WBSummary Get-WBSummary [-Verbose] [-Debug] [-ErrorAction ... Cmdlet Get-WBSystemState Get-WBSystemState [-Policy] [-Verbose... Cmdlet Get-WBVolume Get-WBVolume [-Disk] [-Verbose] [-Debug... Cmdlet Get-WBVssBackupOptions Get-WBVssBackupOptions [-Policy] [-Ve... Cmdlet New-WBBackupTarget New-WBBackupTarget [-Disk] [[-Label] [-NonRecur... Cmdlet New-WBPolicy New-WBPolicy [-Verbose] [-Debug] [-ErrorAction <... Cmdlet Remove-WBBackupTarget Remove-WBBackupTarget [-Policy] [-Tar... Cmdlet Remove-WBBareMetalRecovery Remove-WBBareMetalRecovery [-Policy] ... Cmdlet Remove-WBFileSpec Remove-WBFileSpec [-Policy] [-FileSpe... Cmdlet Remove-WBPolicy Remove-WBPolicy [[-Policy] ] [-All] [-... Cmdlet Remove-WBSystemState Remove-WBSystemState [-Policy] [-Verb... Cmdlet Remove-WBVolume Remove-WBVolume [-Policy] [-Volume] <... Cmdlet Set-WBPolicy Set-WBPolicy [-Policy] [-Force] [-Ver... Cmdlet Set-WBSchedule Set-WBSchedule [-Policy] [-Schedule] ... Cmdlet Set-WBVssBackupOptions Set-WBVssBackupOptions [-Policy] [-Vs... Cmdlet Start-WBBackup Start-WBBackup [-Policy] [-Async] [-F... [↑] [Administrator]

Мы видим достаточно приличное количество командлетов и часть из них мы используем для работы. Все задания бэкапов в 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. В следующей (или следующих) рассмотрим вопросы управления этими политиками и вопросы каталогизации/ротации архивов.

Wednesday, October 07, 2009 11:43:07 PM (FLE Daylight Time, UTC+03:00)   Comments [1]    

 

 · 

All content © 2008 - 2012, Vadims Podāns
"Spaces" Theme provided by: Vadims Podāns
About


E-mail - Send mail to the author(s)
Live Messenger -
For english language visitors
Библиотека
Календарик
<February 2012>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

Карта расположения посетителей
Favorites





Disclaimer
Вся информация на сайте предоставляется на условиях «как есть», без предоставления каких-либо гарантий и прав.

При использовании материалов c данного сайта ссылка на оригинальный источник обязательна.
Protected by Copyscape Online Plagiarism Scanner