Сложно переоценить необходимость создания резервных копий для восстановления важных данных на серверах предприятия любого уровня. В современном мире деятельность предприятий немыслима без IT инфраструктуры, баз данных, почтовых серверов, контроллеров домена и пр. Потери информации от поломки комплектующих, перебоев электричества или человеческого фактора не так уж редки и грамотный администратор должен быть готов к любым ситуациям. Сегодня я расскажу о резервном копировании виртуальных машин Hiper-V

Резервное копирование виртуальных машин Hyper-V
После переноса существующих и установки новых серверов в среде Hyper-V Windows Server 2008 R2, передо мной стала задача максимально уберечь себя от незапланированных выездов и ночёвок на работе для восстановления всего этого хозяйства в случае сбоев. Как это часто бывает, несмотря на объективное обоснование предоставленное руководству, денег на эту затею не дали, поэтому вариант с Veeam Backup, на который я рассчитывал, отпал. Результаты поиска бесплатных продуктов дали два варианта – скрипт HyperV Backup Tool и утилиту HVBackup. Оба решения обладают примерно одинаковыми возможностями, я решил начать знакомство со второй утилиты.
Программа HVBackup это утилита командной строки, поэтому сценарий её работы проще всего составить CMD-файлом, в котором так же реализуем отправку себе на почту отчётов о результатах бекапа. Скачиваем HVBackup и blat (утилита командной строки для отправки почты). Распаковываем первую в папку HVBackup, в ней создаем папку blat и распаковываем в неё одноименную утилиту. В папке HVBackup создаём командные файлы по количеству виртуальных машин следующего содержания:

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 (восстановление)