5 сентября 2011 г.

Система резервного копирования на PowerShell

Прошло примерно полтора года с тех пор как я написал свой первый backup-скрипт на PowerShell. С тех пор значительно прибавилось количество объектов для резервного копирования и, соответственно, выросло количество скриптов. Все это значительно усложняет администрирование и мониторинг системы, если все это вообще можно назвать системой.

Тут и приходит идея систематизации и написания полноценной системы создания бэкапов. В качестве языка программирования мною был выбран PowerShell за его гибкость, удобный C#-подобный синтаксис и отсутствие необходимости что-либо перекомпилировать при изменении исходного кода. Единственный минус - не очень удобный отладчик, но это мы переживем.

Постановка задачи

Система в целом:
  • Система состоит из ядра и конфигурационных файлов
  • Добавление и изменение задач архивации должно быть максимально простым и быстрым
Ядро
  • Максимально универсально и абстрагировано от конкретных условий бэкапа
  • Загружает файл задания по его имени, переданному в качестве параметра
  • Имеет возможность загружать бэкапы в удаленное хранилище (средствами BITS, например)
  • Ведет логи работы каждой задачи резервного копирования в целом, а так же фиксирует вывод каждой программы, выполняемой внутри задачи
  • Оповещает о результатах бэкапов по электронной почте (опционально, по СМС). В случае ошибки, к письму должны прикрепляться заархивированные логи для каждой неудавшейся задачи
  • Высылает на e-mail оповещение о результатах резервного копирования, в зависимости от настройки: либо отдельно для каждой задачи бэкапа сразу после ее завершения, либо, в указанный момент времени, общую сводку для всех заданий. При использования СМС-оповещение высылается только сводка по всем бэкапам в определенное время, желательно не ночью
  • Для обеспечения согласованности данных должна быть реализована функция использования снапшотов VSS (утилита vshadow.exe). Управление использованием этой функции осуществляется отдельно для каждой задачи бэкапа
Конфигурационные файлы
  • Для каждой задачи архивации используется отдельный файл задания (скрипт на PowerShell). Пока не решил что именно там будет, но, по идее, там должен быть некий набор параметров архивации и инструкций (список запускаемых программ, порядок запуска и т.п.)
  • Все базовые настройки (например, папка backup-конфигов, папка логов, архиватор и т.п.) хранятся в отдельном конфиге
Вроде бы, техзадание готово, осталось найти свободное время и приняться за его реализацию.

Комментариев нет:

Отправить комментарий