Сложно переоценить необходимость создания резервных копий для восстановления важных данных на серверах предприятия любого уровня. В современном мире деятельность предприятий немыслима без IT инфраструктуры, баз данных, почтовых серверов, контроллеров домена и пр. Потери информации от поломки комплектующих, перебоев электричества или человеческого фактора не так уж редки и грамотный администратор должен быть готов к любым ситуациям. Сегодня я расскажу о резервном копировании виртуальных машин Hiper-V
После переноса существующих и установки новых серверов в среде Hyper-V Windows Server 2008 R2, передо мной стала задача максимально уберечь себя от незапланированных выездов и ночёвок на работе для восстановления всего этого хозяйства в случае сбоев. Как это часто бывает, несмотря на объективное обоснование предоставленное руководству, денег на эту затею не дали, поэтому вариант с Veeam Backup, на который я рассчитывал, отпал. Результаты поиска бесплатных продуктов дали два варианта – скрипт HyperV Backup Tool и утилиту HVBackup. Оба решения обладают примерно одинаковыми возможностями, я решил начать знакомство со второй утилиты.
Программа HVBackup это утилита командной строки, поэтому сценарий её работы проще всего составить CMD-файлом, в котором так же реализуем отправку себе на почту отчётов о результатах бекапа. Скачиваем HVBackup и blat (утилита командной строки для отправки почты). Распаковываем первую в папку HVBackup, в ней создаем папку blat и распаковываем в неё одноименную утилиту. В папке HVBackup создаём командные файлы по количеству виртуальных машин следующего содержания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
set backpath="\\SRV-BK\Hyper-V" set server=SRV-SC set mail=admin@domain.ru set smtp=smtp.domain.ru set sender=admin@domain.ru set login=admin@domain.ru set pass=******** set num=3 pushd %backpath% && forfiles.exe -m *.zip -d -%num% -c "cmd /c del @path" popd %~dp0HVBackup.exe -l %server% -o %backpath% 1> %~dp0lastlog_out.txt 2> %~dp0lastlog_err.txt && set error=0||set error=1 if ["%error%"] EQU ["1"] ( %~dp0blat\blat -to "%mail%" -subject "%server% - Backup Error" -body "HVBackup finished" -server %smtp% -f %sender% -u %login% -pw %pass% -attacht %~dp0lastlog_out.txt,%~dp0lastlog_err.txt ) if ["%error%"] EQU ["0"] ( %~dp0blat\blat -to "%mail%" -subject "%server% - Backup Successfully Finished" -body "HVBackup finished" -server %smtp% -f %sender% -u %login% -pw %pass% -attacht %~dp0lastlog_out.txt,%~dp0lastlog_err.txt ) |
Обратите внимание на блок объявления переменных, в него вам необходимо вписать ваши данные: путь к директории бекапов, имя виртуальной машины, почтовые реквизиты для отправки почты, а в параметре num задать сколько резервных копий требуется хранить. После чего необходимо создать назначенные задания на ежедневный запуск скриптов.
Листинг CMD-файла, думаю, не вызовет трудностей в понимании сценария. Первым действием удаляются устаревшие резервные копии согласно параметру num, далее выполняется непосредственно резервное копирование, по результатам которого отправляется отчёт по почте с логами бекапа.
Часть 2 — Резервное копирование виртуальных машин Hyper-V (восстановление)