Главная Windows, Без рубрики, Новое Эволюция ntbackup в wbadmin
  • Эволюция ntbackup в wbadmin

    backupgСтарая истина – “бэкапы не нужны до того времени пока они не понадобятся” актуальна всегда и постоянно. Со времен Windows NT для архивации и восстановления использовалась утилита NTBackup. Проблем с ней не возникало и она верой и правдой служила долгие годы. Настройки были просты и производились как в графическом интерфейсе так и в командной строке. Синтаксис был простой, наприме для того что бы выполнить бэкап System State (состояния системы) достаточно было воспользоваться командой: NTBACKUP backup systemstate /f “D:\Backup\SystemState-backup.bkf”

    Время шло. Появился Windows Server 2000 и утилита приобрела возможность работы с VSS. В Windows 2003 она осталась прежней. Но в момент выхода Windows 2008 всех слегка разочаровал тот факт что она исчезла и на замену ей пришел непонятный, малофункциональный и крайне неуклюжий Windows Backup.

    – Где же наш NT Backup? Как же без него? – воскликнули все после того как не увидели привычного инструмента.

    И были совершенно правы потому что исчезли привычные возможности выбора отдельных папок, исчез любимый System State Backup.

    Эволюция.

    Первый взгляд на Windows Backup слегка озадачил из за его скудного интерфейса и небольших возможностей. Немного порывшись в документации я выяснил что не все так плохо как кажется – весь “потерянный” функционал переместился в командную строку. Появилась утилита wbadmin.exe и управлять резервным копированием стало гораздо проще.
    Она имела долгожданную поддержку powershell что сделало ее незаменимым инструментом системного администратора.

    Исчез неповоротливый графический интерфейс и синтаксис команды не вызовет затруднений по причине того что информация предоставляемая по ключу /? более чем достаточна.

    – Верните нам графическую оболочку! – кричали одни.
    – Нам все нравиться. – сказали их оппоненты.
    Микрософт подумал и сообщил что в следующей версии ОС будут учтены желания и первых и вторых.

    Что бы не быть голословным приведу несколько типичных примеров использования утилиты wbadmin.

    Выполнить резервную копию нескольких папок и состояния системы на диске Z: можно командой

    wbadmin start backup –backupTarget:z: -include:D:\Files\Share01,D:\Files\Share02 –systemstate -vsscopy

    или выполнить бэкап в сетевую папку только папки D:\Files\Share01 без подкаталогов.

    wbadmin start backup –backupTarget: \\backupshare\backup1 -noinheritacl -nonrecurseinclude:D:\Files\Share01

    состояние системы, бывший System State, резервируется командой.

    wbadmin start systemstatebackup -backupTarget:f:

    А восстанавливается так

    wbadmin start sysrecovery -version:01/31/2011-09:00 -backupTarget:d:

    для того что бы диск не переполнялся полезно подчищать набор имеющихся версий и оставлять три последние.

    wbadmin delete systemstatebackup -keepVersions:3

    Возможности утилиты позволяют планировать задания. Например, чтобы сохранять важные системные области на диск D: в 10 и 18 часов, пишем:

    wbadmin enable backup –allcritical –addtarget:d: -schedule:10:00,18:00

    Чтобы отменить задание, используем команду

    wbadmin disable backup

    Революция

    Но время шло и из недр корпорации Microsoft появился Windows 2008 R2.
    В нем наряду со многими изменениями эволюционировала и утилита Windows Backup.

    – Что же изменилось? – спросите вы.

    Давайте по шагам попробуем разобраться. Начнем с процедуры установки необходимых компонентов. Установку с использованием графического интерфейса я умышленно пропускаю и буду оперировать только командной строкой.

    Устанавливаем компоненты Windows Server Backup и Command-line Tools из Server Backup Features.

    dism /online /enable-feature /featurename:WindowsServerBackup
    dism /online /enable-feature /featurename:WindowsServerBackupCommandlet

    После чего вводим.

    dism /online /get-features > D:\TEMP\Result.txt

    В полученном файле ищем строки.

    Feature Name : WindowsServerBackup
    State : Enabled

    Feature Name : WindowsServerBackupCommandlet
    State : Enabled

    Поле “State : Enabled” сообщает о том что компоненты установлены успешно.

    Запускаем Powershell.
    Для доступа к командлетам управления wbadmin необходимо импортировать модуль

    Import-Module ServerManager

    После этого ничто не помешает нам перейти к реализации задуманных планов по резервному копированию.

    Сценарий №1

    Нам необходимо создать резервную копию и включить ее в расписание. Резервируем папку D:\Files\. Папку D:\Files\Deploy необходимо исключить. Так же в набор нужно добавить System State.

    # Добавляем снапин
    Add-PSSnapin Windows.Serverbackup
    # создаем экземпляр политики в переменной $policy
    $policy = New-WBPolicy
    # включаем в бэкап SystemState
    Add-WBSystemState $policy

    # Задаем пути и исключения
    $filespec1 = New-WBFileSpec -FileSpec “D:\Files\”
    $filespec2 = New-WBFileSpec -FileSpec “D:\Files\Deploy” -Exclude
    $filespecarray = ($filespec1, $filespec2)

    # Подключаем назначенные ранее параметры к политике
    Add-WBFileSpec -Policy $policy $filespecarray

    # Для сохранения резервной копии указываем том назначения
    $volumeBackupLocation = New-WBBackupTarget -VolumePath E:
    Add-WBBackupTarget -Policy $policy -Target $volumeBackupLocation

    # Создаем расписание. В нашем случае – ежедневно в 21:00
    Set-WBSchedule -Policy $policy -Schedule 21:00
    Set-WBPolicy -Policy $policy

    # выводим на экран детали созданной политики
    $policy

    Сценарий №2

    Необходимо создать резервную копию в сетевую папку.

    # Добавляем необходимый снапин
    Add-PSSnapin Windows.Serverbackup
    $policy = New-WBPolicy
    Add-WBSystemState $policy
    $filespec1 = New-WBFileSpec -FileSpec “D:\Files\”
    Add-WBFileSpec -Policy $policy $filespec1

    # для бэкапа с сетевую папку необходимо задать данные пользователя под которым выполняется задание
    $cred = Get-Credential

    # Укажите папку назначения
    $volumeBackupLocation = New-WBBackupTarget -NetworkPath \\SERVER\BACKUP -Credential $cred

    Add-WBBackupTarget -Policy $policy -Target $volumeBackupLocation
    # Указываем расписание. В данном примере это ежедневно в 3 часа ночи и 22 часа
    Set-WBSchedule -Policy $policy -Schedule 03:00,22:00
    # финальный шаг – сохранение настроек после которого система создает задание по бэкапу.
    Set-WBPolicy -Policy $policy

    Небольшой бонус к вышесказанному.

    Если вам лень контролировать результаты выполнения задания то можно настроить процедуру анализа. Она приведена ниже.

    # Ждем пока не завершиться активное задание
    while ((Get-WBJob).State -eq “Running”) { }

    # получаем результаты работы задания
    $ResultJob = Get-WBJob -Previous 1

    # анализируем результат
    If (!($ResultJob.JobState -eq “Completed”)) {
    # задание завершилось неудачно
    //код обработки//
    } Else {
    # задание завершилось удачно
    //код обработки//
    }

    В строку //код обработки// вставьте нужный вам код и наслаждайтесь широчайшими возможностями которые вам предоставляет powershell.

    Мариничев Сергей

    blog.wadmin.ru

Комментарии

  1. Мне кажется в последнем куске ошибка:

    If (!($ResultJob.JobState -eq “Completed”)) {
    # задание завершилось неудачно

    Это как раз наоборот удачное выполнение.

  2. Не совсем так. Ошибки нет.
    По условию что результат gпоследнего задания не соответствует Completed
    If (!($ResultJob.JobState -eq “Completed”))
    Это отрицание истины.

    задание считается не успешным.
    Можно было бы написать
    If ($ResultJob.JobState -ne “Completed”)
    Это было бы проще, но я легких путей не ищу 🙂

  3. $ResultJob.JobState -eq «Completed») – удачно, а “!” инвертирует это в “неудачно”, не?

  4. именно так. Отрицание удачного результата.

  5. Ух ты, не знал, что так можно)

  6. Сергей, поддержка posh в windows backup была и в win2008 без r2 и по-моему даже до sp2. советую – http://www.buldakov.ru/?p=307. достаточно подробно ещё Поданс у себя в блоге расписывал спустя год-полтора после меня.

  7. Позволю не согласиться.
    Поддержка бэкапа началась только после выхода Powershell V2, в первой версии этого не было.
    Windows 2008 R2 по умолчанию комплектуется второй версией, а просто 2008 первой. Вторая версия приходит как апдейт.
    За линк спасибо, видел материал довольно давно, с блогом Вадима тоже знаком.

  8. те командлеты, что были в 2008 сервере (без установленного posh 2.0) – это не поддержка posh в windows backup?

  9. Вы заставили меня усомниться.
    Первое что я видел с PS 2.0 это новый функционал что включал поддержку заданий по резервному копированию

    До этого приходилось довольствоваться только wbadmin.exe.
    PS как только будет свободное время поставлю win 2008 без пака (образ вроде где то был) и проверю.

  10. проверьте. на технете поддержка posh утилитой резервного копирования упоминается в статье аж от 2007 года – http://technet.microsoft.com/ru-ru/library/cc770266(WS.10).aspx:

    “Кроме того, в операционную систему Windows Server 2008 входит набор команд (командлетов) Windows PowerShell™ для системы архивации данных Windows Server, которые можно использовать при создании сценариев для выполнения архивации.”

    то, что они упорно backup переводят как архивирование – не должно вводить в заблуждение.

  11. Сложно не согласиться.
    Но Вы не откажетесь от того что если поддержка и была то толку от нее было маловато?
    wbadmin в win2008 был откровенно никакой и имел скромные возможности, а в 2008 R2 приобрел новый функционал.

    Кстати, вот и статья Вадима – http://www.sysadmins.lv/PermaLink,guid,ffb3aa89-0bc0-4de0-9eaf-5866e813afec.aspx

    вот и ответ

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

    Подкорректирую статью.

  12. Да, толку от утилиты Server Backup в Windows 2008 и от командлетов, которые были написаны на тот момент было мало. Тем не менее факта это не отменяет. Это был первый блин МС в самостоятельном написании утилиты резервного копирования (не считая DPM, который до нынешней третьей версии имел функции, которые могли заинтересовать разве что ярых фанатиков компании МС).

  13. Желание что либо написать свое видимо вызывало окно “О программе” которое было в NT Backup. Там было написано Veritas…
    Действительная работа над ошибками и начало принесения пользы наступило в версии R2.
    Я бы не отказался еще от функции ротации (аналог бэкап-девайсов в SQL), но ее ждать думаю придется очень долго…
    Поэтому пишу все что требуется руками.

  14. Не. Там процесс запустило одно вполне себе приземлённое событие – Veritas в полном составе влился в Symantec. После чего все наработки Veritas’а (квотирование и ntbackup) были жостко выпилены из Longhorn Server – Symantec видимо запросил много денег…

  15. Наверное, имеет смысл оговориться, что “wbadmin start sysrecovery -version:01/31/2011-09:00 -backupTarget:d:” следует выполнять только в режиме Safe Mode, исправьте , если не так.

  16. Вы путаете Safe Mode с DSRM режимом (для восстановления контроллера домена).
    Для восстановления состояния системы вполне достаточно находиться в одной из групп Backup Operators или Administrators. И после восстановления необходима перезагрузка.

  17. Здравствуйте. У меня настроена архивация нужной папки (с подпапками и файлами) на сетевой ресурс. Каждый раз при новой архивации, старый архив затирается. Иными словами: пользователь удалил файл в пятницу, а в понедельник его уже не восстановить, т.к. система архивации отработала в субботу. Пробовал и vssFull и vssCopy все равно пишет что архивация “Добавочная” а из архива удаляет несуществующие файлы. Как сделать чтобы к архиву добавлялись только новые файлы а те что пользователи удалили он не удалял из архива?

  18. Ваш комментарий

  19. Уважаемые коллеги.
    Подскажите как в win2008 r2 после выполнения Windows Backup вручную или автоматически выполнить проверку ( check ) Windows Backup файла?