Коллега написал краткий, но содержательный пост для корпоративного блога, который сегодня и предлагается вашему вниманию (правильнее было бы назвать его «авторская русскоязычная версия, с изменениями и дополнениями»).
День добрый,
Меня зовут Владимир Ерёмин, я работаю в компании Veeam Software на позиции product manager. Одной из вверенных мне областей является PowerShell оснастка к нашему продукту Veeam Backup and Replication, и именно о работе с оной и пойдет речь далее.
Начнем с небольшого лирического отступления.
По ходу своей деятельности я неоднократно сталкивался с мнением, что скрипты и все, что с ними связано — это удел хардкорных бородачей, и, как говорил персонаж известного мультфильма, лучше не касаться их и десятиметровой палкой. В реальности, как это обычно водится, все выглядит несколько по-другому.
При должной сноровке знание PowerShell’a сильно облегчает жизнь – берешь задачу, выполнение которой потенциально могло занять N-ое количество часов, и, благодаря автоматизации, сводишь ее до нескольких минут. Избавляешь себя любимого от рутины, предотвращаешь фактор человеческой ошибки, вдобавок, учишься всякому новому и ранее неизведанному в процессе написания скриптов. Не стоит также забывать, что работа с тем же Nano Server’ом будет строиться исключительно через PowerShell. Поэтому, друзья, если вы не изучали PowerShell ранее, настоятельно рекомендую приступить к его изучению прямо сейчас.
Как и у каждой уважающей себя софтверной компании, у нас есть свой флагманский продукт, в нашем случае — всем известный и горячо любимый Veeam Backup & Replication. Чтобы никто не ушел обиженным, выпускается он в нескольких версиях, начиная от Free и заканчивая Enterprise Plus.
Главная особенность, которой может похвастаться бесплатная версия, — функция упрощённого бэкапа, называемая VeeamZIP.
Несмотря на всю свою простоту и удобство, была у VeeamZIP одна раздражающая деталь, которая заставляла пользователей вновь и вновь проливать скупые и не очень слёзы на наших форумах, а именно — невозможность создавать бэкапы по расписанию.
Все поменялось, когда с выпуском Veeam Backup & Replication v8 Update 2 мы отдали на откуп общественности несколько PowerShell командлетов. Используя их, пользователь был в состоянии написать простой скрипт, с помощью которого создавался бэкап одной или нескольких машин. Помимо этого, благодаря Task Scheduler, скрипту можно было выставить какое угодно расписание.
Прекрасно понимания, что для некоторых пользователей комбинация слов “простой” и “скрипт” выглядит слегка странной, я написал небольшой пример (скачать его можно тут и тут). Ниже мы разберем его немного более подробно.
Как было сказано ранее, скрипт позволяет создавать бэкапы выбранных виртуальных машин. Машины могут находиться как на обычных хостах/кластерах, так и тех, что управляются vCenter’ом (да, в качестве разбора был выбран пример для VMware).
У скрипта есть три обязательных параметра: имена виртуалок, хосты/кластеры/vCenter, на которых они восседают, и папку, в которую положатся бэкапы.
Остальные параметры носят опциональный характер.
В зависимости от желаний и предпочтений можно поменять уровень компрессии, время, в течение которого должен храниться бэкап, настройки VMware Quiescence, а также параметры уведомлений:
Если есть необходимость получать отчёт о проделанной работе, можно поиграться с настройками уведомлений:
Отчёт выглядит следующим образом:
Экспериментируя со значениями переменных, можно найти ту комбинацию, которая удовлетворит именно вашему представлению о прекрасном. К примеру, если вы хотите, чтобы бэкапы были удалены через две недели, поставьте переменной $Retention значение “In2Weeks” и так далее.
Для пущего удобства я снабдил переменные в скрипте кратким описанием, поэтому острой необходимости описывать здесь каждую настройку в отдельности и ее возможные значения, на мой взгляд, нет.
Прежде чем ставить выполнение скрипта на поток, советую убедиться, что с ним в порядке, запустив его пару раз вручную.
Самый простой из известных мне способов запускать скрипты по расписанию – это Windows Task Scheduler.
Открываем его и переходим к созданию Basic Task.
Не забываем про то, что задания неплохо снабжать многозначительными именами и описаниями, чтобы не тратить впоследствии драгоценное время, гадая, что же это такое выполняется, а главное – с какой целью.
Следующая страница – Task Trigger.
Здесь всё просто и интуитивно понятно. Нужно решить, как часто нам хотелось бы создавать бэкапы (в английском под это дело есть умная аббревиатура – RPO, Recovery Point Objective), и отразить наши желания в виде заданных настроек.
Самый распространенный вариант – создание бэкапа раз в сутки.
Далее ставим время выполнения скрипта. Чтобы избежать излишних нагрузок на серверы в рабочее время, часто выбирают вечерние часы.
На следующей странице указываем запуск программы в качестве необходимого действия и следуем дальше.
В соответствующее поле вводим следующую команду:
Ну, вот и всё! Если вдруг вспомнили, что нужно внести кое-какие изменения в только что созданную задачу, то ставим флажок “Open the Properties” перед тем, как нажать “Finish”.
Есть серьезное подозрение, что в подавляющем большинстве случаев скрипт будет выполняться на сервере в то время, когда ответственный пользователь и не залогинен вовсе. В связи с чем рекомендуется указать логин и пароль, что позволит скрипту совершать свое черное дело без пользовательского логина в системе.
Т.к. мы люди мнительные, не будет лишним после создания задачи щелкнуть по ней правой кнопкой мыши и прогнать ее в тестовом режиме. (“Run”)
Засим наше увлекательное путешествие в мир скриптов можно считать оконченным. Долгожданная цель (бэкапы по расписанию) достигнута, а интерес к PowerShell пробужден, по крайней мере, я искреннее надеюсь на это. Не стесняйтесь по всем возникшим вопросам обращаться к нам как здесь, так и на наших форумах (forums.veeam.com).
До новых встреч!
День добрый,
Меня зовут Владимир Ерёмин, я работаю в компании Veeam Software на позиции product manager. Одной из вверенных мне областей является PowerShell оснастка к нашему продукту Veeam Backup and Replication, и именно о работе с оной и пойдет речь далее.
Начнем с небольшого лирического отступления.
По ходу своей деятельности я неоднократно сталкивался с мнением, что скрипты и все, что с ними связано — это удел хардкорных бородачей, и, как говорил персонаж известного мультфильма, лучше не касаться их и десятиметровой палкой. В реальности, как это обычно водится, все выглядит несколько по-другому.
При должной сноровке знание PowerShell’a сильно облегчает жизнь – берешь задачу, выполнение которой потенциально могло занять N-ое количество часов, и, благодаря автоматизации, сводишь ее до нескольких минут. Избавляешь себя любимого от рутины, предотвращаешь фактор человеческой ошибки, вдобавок, учишься всякому новому и ранее неизведанному в процессе написания скриптов. Не стоит также забывать, что работа с тем же Nano Server’ом будет строиться исключительно через PowerShell. Поэтому, друзья, если вы не изучали PowerShell ранее, настоятельно рекомендую приступить к его изучению прямо сейчас.
Бесплатно не значит плохо
Как и у каждой уважающей себя софтверной компании, у нас есть свой флагманский продукт, в нашем случае — всем известный и горячо любимый Veeam Backup & Replication. Чтобы никто не ушел обиженным, выпускается он в нескольких версиях, начиная от Free и заканчивая Enterprise Plus.
Главная особенность, которой может похвастаться бесплатная версия, — функция упрощённого бэкапа, называемая VeeamZIP.
Несмотря на всю свою простоту и удобство, была у VeeamZIP одна раздражающая деталь, которая заставляла пользователей вновь и вновь проливать скупые и не очень слёзы на наших форумах, а именно — невозможность создавать бэкапы по расписанию.
Все поменялось, когда с выпуском Veeam Backup & Replication v8 Update 2 мы отдали на откуп общественности несколько PowerShell командлетов. Используя их, пользователь был в состоянии написать простой скрипт, с помощью которого создавался бэкап одной или нескольких машин. Помимо этого, благодаря Task Scheduler, скрипту можно было выставить какое угодно расписание.
Прекрасно понимания, что для некоторых пользователей комбинация слов “простой” и “скрипт” выглядит слегка странной, я написал небольшой пример (скачать его можно тут и тут). Ниже мы разберем его немного более подробно.
От слов к делу. Параметры
Как было сказано ранее, скрипт позволяет создавать бэкапы выбранных виртуальных машин. Машины могут находиться как на обычных хостах/кластерах, так и тех, что управляются vCenter’ом (да, в качестве разбора был выбран пример для VMware).
У скрипта есть три обязательных параметра: имена виртуалок, хосты/кластеры/vCenter, на которых они восседают, и папку, в которую положатся бэкапы.
Остальные параметры носят опциональный характер.
##################################################################
# Переменные, определяемые пользователем
##################################################################
# Имена ВМ для бэкапа. При наличии нескольких имён следует использовать запятую (обязательный параметр). Например, $VMNames = “VM1”,”VM2”
$VMNames = ""
# Имя сервера vCenter или хоста, кластера, где находятся ВМ (обязательный параметр)
$HostName = ""
# Папка для бэкапов. Например, C:\Backup (обязательный параметр)
$Directory = ""
В зависимости от желаний и предпочтений можно поменять уровень компрессии, время, в течение которого должен храниться бэкап, настройки VMware Quiescence, а также параметры уведомлений:
# Уровень компрессии(опционально; возможные значения: 0 – выкл., 4 – рекомендованный для дедупликационных хранилищ, 5 - оптимальный, 6 - высокий, 9 - максимальный)
$CompressionLevel = "5"
# VMware Tools Quiescence. «Заморозить» ВМ при создании снапшота (опционально; на машине должны быть установлены VMware Tools. Возможные значения: $True/$False)
$EnableQuiescence = $True
# Время хранения (опционально; по умолчанию, файлы VeeamZIP не удаляются, а хранятся в указанной папке неограниченное время.
# Возможные значения: Never, Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month)
$Retention = "Never"
Если есть необходимость получать отчёт о проделанной работе, можно поиграться с настройками уведомлений:
##################################################################
# Настройки уведомлений
##################################################################
# Включить уведомления (опционально)
$EnableNotification = $True
# Сервер SMTP
$SMTPServer = ""
# Отправитель
$EmailFrom = ""
# Получатель
$EmailTo = ""
# Тема
$EmailSubject = ""
Отчёт выглядит следующим образом:
Экспериментируя со значениями переменных, можно найти ту комбинацию, которая удовлетворит именно вашему представлению о прекрасном. К примеру, если вы хотите, чтобы бэкапы были удалены через две недели, поставьте переменной $Retention значение “In2Weeks” и так далее.
Для пущего удобства я снабдил переменные в скрипте кратким описанием, поэтому острой необходимости описывать здесь каждую настройку в отдельности и ее возможные значения, на мой взгляд, нет.
Расписание. Надежное, как швейцарские часы
Прежде чем ставить выполнение скрипта на поток, советую убедиться, что с ним в порядке, запустив его пару раз вручную.
Самый простой из известных мне способов запускать скрипты по расписанию – это Windows Task Scheduler.
Открываем его и переходим к созданию Basic Task.
Не забываем про то, что задания неплохо снабжать многозначительными именами и описаниями, чтобы не тратить впоследствии драгоценное время, гадая, что же это такое выполняется, а главное – с какой целью.
Следующая страница – Task Trigger.
Здесь всё просто и интуитивно понятно. Нужно решить, как часто нам хотелось бы создавать бэкапы (в английском под это дело есть умная аббревиатура – RPO, Recovery Point Objective), и отразить наши желания в виде заданных настроек.
Самый распространенный вариант – создание бэкапа раз в сутки.
Далее ставим время выполнения скрипта. Чтобы избежать излишних нагрузок на серверы в рабочее время, часто выбирают вечерние часы.
На следующей странице указываем запуск программы в качестве необходимого действия и следуем дальше.
В соответствующее поле вводим следующую команду:
Powershell –file “Путь к файлу Veeamzip.ps1”
Ну, вот и всё! Если вдруг вспомнили, что нужно внести кое-какие изменения в только что созданную задачу, то ставим флажок “Open the Properties” перед тем, как нажать “Finish”.
Есть серьезное подозрение, что в подавляющем большинстве случаев скрипт будет выполняться на сервере в то время, когда ответственный пользователь и не залогинен вовсе. В связи с чем рекомендуется указать логин и пароль, что позволит скрипту совершать свое черное дело без пользовательского логина в системе.
Т.к. мы люди мнительные, не будет лишним после создания задачи щелкнуть по ней правой кнопкой мыши и прогнать ее в тестовом режиме. (“Run”)
Вместо послесловия
Засим наше увлекательное путешествие в мир скриптов можно считать оконченным. Долгожданная цель (бэкапы по расписанию) достигнута, а интерес к PowerShell пробужден, по крайней мере, я искреннее надеюсь на это. Не стесняйтесь по всем возникшим вопросам обращаться к нам как здесь, так и на наших форумах (forums.veeam.com).
До новых встреч!
Полезные ссылки
- Бесплатное решение Veeam Backup FREE Edition (ссылка для скачивания): https://www.veeam.com/virtual-machine-backup-solution-free-download.html
- PowerShell 4.0 для новичков (статья на англ. языке): https://www.veeam.com/wp-powershell-newbies-start-powershell.html
- Руководство по работе с оснасткой PowerShell для Veeam Backup & Replication (на англ.языке): https://helpcenter.veeam.com/backup/powershell/veeam_psreference.html
Комментарии (11)
dazran
01.03.2016 14:03Ссылки на скрипты ведут в никуда, не поленился нашел на оригинал записи но и там ссылки на скрипты всё-равно дохлые
Попутно заметил что во многих статьях в блоге отсутствуют изображения.polarowl
01.03.2016 14:21Спасибо, как раз проверяем, в чем проблема. Как только починим — сразу сигнализируем.
VahMaster
02.03.2016 18:04как бекапить на сетевую шару, где подключение с альтернативными кредами?
polarowl
04.03.2016 14:01На сегодня возможности указать конкретный аккаунт в командлете нет, так что нужно обеспечить наличие всех необходимых прав у аккаунта Veeam Backup Service (в частности, убедиться, что он имеет доступ до этой шары).
И еще фидбэк от автора скрипта:
- Можно замапить network драйв под какими-нибудь кредами, предварительно дав аккаунту компа пермиссии на запись на эту шару. И попробовать залить на замапленный диск через VeeamZIP (не проверял лично). Теперь думаем над тем, чтобы прокинуть параметры
–NetworkCredentials для командлета Start-VBRZIP. Спасибо за вопрос, натолкнувший на полезную идею!
- Можно замапить network драйв под какими-нибудь кредами, предварительно дав аккаунту компа пермиссии на запись на эту шару. И попробовать залить на замапленный диск через VeeamZIP (не проверял лично). Теперь думаем над тем, чтобы прокинуть параметры
navion
Где задаются параметры аутентификации для папки или чьи разрешения наследуются?
Зачем реализовывать уведомления в скрипте, если работают (если в девятке их не сломали) стандартные из настроек VBR по завершении задания?
И самое главное, зачем напрямую перечислять имена ВМ, когда есть (был в v8) Find-VBRViEntity с фильтром по тагам и именам?
Loxmatiymamont
polarowl
Пара уточнений и пояснений от автора скрипта:
navion
Спасибо за развёрнутый ответ. Второй пункт надо будет проверить, а пока сижу на триалке и думаю покупать или нет — даже Essentials Standard выходит в три раза дороже любого софта, который развёрнут на сервере.