Недавно создавал небольшую организацию Exchange 2007 для одного из заказчиков. Сервер Exchange был всего один, он же являлся по совместительству одним из контроллеров домена AD. Операционная система - Windows 2008 Server R2 Standard. Exchange 2007, соответственно - SP3 (так как более ранние сборки Exchange 2007 на Windows Server 2008 R2 не работают).
Нормального программного обеспечения для резервного копирования (Symantec Backup Exec, Microsoft DPM и т.д), как обычно, не имелось, поэтому пришлось настраивать бэкап штатными средствами Windows; помимо бэкапа данных Exchange, хотелось также делать и копию System State.
Решение вышло до предела примитивное, но две особенности хотелось бы отметить.
1)
Windows Backup 2008 (см. http://technet.microsoft.com/en-us/library/cc770266(WS.10).aspx ) НЕ умеет бэкапить в сеть при выполнении операции Scheduled Backup (для планирования таких операций в Windows 2008 используется не Windows Task Scheduler, а собственный планировщик утилиты) - поддерживается только бэкап на локально подключенные (в том числе USB) диски. Это новшество (а также захват управления томом, используемым в качестве целевого устройства, и хранение полной резервной копии системы в VHD-формате) введено для оптимизации процесса создания полной
резервной копии и восстановления системы из нее, но в реальной жизни порядком мешает - достаточно посмотреть комментарии "простого народа" к статье по приведенной выше ссылке
Обойти данную проблему можно, "обернув" задание бэкапа в вызов из командной строки утилиты Wbadmin, которая имеет несколько иной набор конфигурационных параметров, и может бэкапить в сеть - ну почему нельзя было сделать того же в графической версии, почему? - и уже эту "обертку" запланировать на исполнение с помощью обычного Task Scheduler. А возможность передачи параметров из планировщика в командный файл позволяет организовать одновременное хранение нескольких резервных копий, которые пишутся по дням (нужно просто создать несколько заданий для разного времени, и передавать разные целевые каталоги в качестве параметра). Получается примерно следующее (копируем данные 6 раз в неделю, храним 2 копии с перезаписью каждый второй день):
В планировщике:
по Пн, Ср, Пт запускаем задание "C:\Admin\Scripts\E7KBackup.CMD 135 >> Backup.log"
а по Вт, Чт, Сб запускаем задание "C:\Admin\Scripts\E7KBackup.CMD 246 >> Backup.log"
E7KBackup.CMD - это и есть "обертка" для Wbadmin. Выглядит она так:
@Echo off
Echo "Begin Backup"
Echo "Date:"
date /T
Echo "Time:"
time /T
Echo "Copying to \\ISA\Backup\VSS\%1"
c:\windows\System32\wbadmin.exe start backup -backupTarget:\\BACKUPSERVER\Backup\VSS\%1 -include:E: -vssFull
Echo "Date:"
date /T
Echo "Time:"
time /T
Echo "Finished."
Значащая только одна строка (8-я), остальные введены для создания простого лога, который может отслеживать администратор. Базы данных и журналы транзакций группы хранения в данном случае лежат на диске E: ; параметр -vssFull предписывает полный бэкап VSS с обрезкой журналов транзакций по завершении операции копирования. "\\BACKUPSERVER\Backup\VSS\%1" (целевая папка копирования)разворачивается в
"\\BACKUPSERVER\Backup\VSS\135" и
"\\BACKUPSERVER\Backup\VSS\246" - это пути, по которым хранятся копии, создаваемые по четным и нечетным дням недели.
2)
Бэкап System State из Wbadmin вызывается синтаксисом wbadmin.exe start systemstatebackup, в который можно было бы включить (с помощью ключа -include:E: ) и БД Exchange. Однако на практике совместное (в одном задании) выполнение операций VSS для Exchange writer и многочисленных VSS-writer'ов системы приводило к следующей ошибке Error 9782 от источника MSExchangeIS:
Как ни странно, помогло разнесение бэкапов Exchange и System State по разным заданиям (с небольшим интервалом по времени) с помощью
аналогичной технологии. Обертка для бэкапа System State вышла такая:
@Echo off
Echo "Begin System State Backup"
Echo "Date:"
date /T
Echo "Time:"
time /T
Echo "Copying to \\ISA\Backup\VSS\SS\%1"
c:\windows\System32\wbadmin.exe start systemstatebackup -backupTarget:\\BACKUPSERVER\Backup\VSS\SS\%1 -quiet
Echo "Date:"
date /T
Echo "Time:"
time /T
Echo "Finished."
И последнее замечание: поскольку VSS-бэкап работает только для целого тома, приведенный выше скрипт бэкапа БД Exchange (E7KBackup.CMD) предполагает, что, кроме данных Exchange, на диске E: ничего нет (что и было так). В противном случае использование ключей "-include:E: -vssFull" будет засорять резервную копию посторонней информацией и, возможно, сильно увеличит ее размер.