Идея создания резервного копирования с помощью всем известной программы WinRar возникала у меня уже очень давно, да и к тому же сама программа благоволит этому, имея на борту возможность управления ею в консольном режиме с помощью ключей и параметров. А тут и случай подвернулся подходящий, так как появилась задача бэкапить локальную базу специализированной программы по управлению сложным и дорогостоящим агрегатом из лаборатории.
По идее, можно создать обычный батник, который будет запускать WinRar и передавать ему необходимые параметры, но учитывая тот факт, что по техзадаче было принято решение бэкапить только по пятницам и при выключении компьютера, а так же чтобы этот процесс был не особо заметен обычному пользователю, то в данном случае пришлось прибегнуть к VBS-скрипту. Для любителей Java - каждый такой любитель сможет самостоятельно переделать мой скрипт в Java.
И последняя прерия в статье. Почему я к своей гремучей смеси добавил GPO? По двум причинам:
- Из-за лени, так как система становиться более продвинутая и в случае замены рабочей станции мне не придётся заново настраивать резервное копирование, так как имя нового компьютера будет в итоге тем же, что было у заменяемого.
- В моём случае, мне не предоставили доступа к этой рабочей станции на длительное время, поэтому я и пошёл обходным путём, чтобы вначале можно было протестировать на виртуалке, ну а после в короткие сроки нацелить GPO на необходимый мне компьютер в локальной сети, совсем не отрывая производство от техпроцесса.
Но, сразу стоит отметить, что в GPO потребуется применить WMI-фильтр, который нацелит мою политику строго на определённую рабочую станцию. Более подробно опишу чуть ниже.
Ну а пока сам скрипт в студию (в скрипте есть комментарии):
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Скрипт автоматической архивации данных реометра '
' Данный скрипт использует для архивации программу WinRar '
' Скрипт будет отрабатываться только по пятницам '
' Скрипт написал Анчуров Олег Владимирович в 2015году '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
On Error Resume Next
Dim TD
'Текущая дата
TD = Date
'Если Пятница, то выполняем код (6 - Пятница)
If WeekDay(TD) = 6 Then
Dim WshShell
Dim objScriptExec
Dim ComLine
Set WshShell = CreateObject("Wscript.Shell")
'Путь к программе WinRar
ComLine = "C:\Program Files\WinRAR\winrar.exe a -ibck -r "
'Место для бэкапов (имя файла - текущая дата без точек)
ComLine = ComLine + "\\BackUpServer\BackUp\DataBase\" + Replace(TD, ".", "") + ".rar "
'Папка, которую необходимо забэкапить
ComLine = ComLine + "C:\DataBase"
'Запуск программы WinRar
Set objScriptExec = WshShell.Exec(ComLine)
'Чистим память
Set objScriptExec = Nothing
Set WshShell = Nothing
End If
, где
"\\BackUpServer\BackUp\DataBase\" - путь для складывания архивов. Обратим внимание, что в моём случае BackUpServer - имя сервера бэкапов, BackUp - имя расшаренной папки для бэкапов, в которой лежат ещё папки. В моём случае я складываю в папку с одноимённым названием архивируемой папки - DataBase.
Информация о передаваемых параметрах для WinRar:
a - создавать новый архив;
-ibck - тихий (фоновый режим), а если точнее, то в трэе будет висеть значёк WinRar во время архивирования;
-r - рекурсивное чтение вложенных папок (данный параметр не обязателен).
Теперь стоит рассказать о GPO.
Как создать WMI-фильтр, можно посмотреть в статье Групповая политика для группы пользователей с применением фильтра WMI. Запрос в фильтре будет выглядеть примерно так: SELECT * FROM Win32_ComputerSystem WHERE Name = 'ComputerName'
где ComputerName - имя рабочей станции, на которой хранится наша локальная база данных в папке C:\DataBase.
Ещё нам следует учесть тот факт, что, скорее всего, прав у пользователя на компьютере администраторских нет, поэтому политику будем применять к конфигурации компьютера, а не к конфигурации пользователя.
Итак, создадим нашу политику. Назовём её, например, BackupCompAgregat. Открываем раздел: Конфигурация компьютера > Политики > Конфигурации Windows > Сценарии. В правой части оснастки у нас будет 2 типа сценариев - "Автозагрузка" и "Завершение работы". Как вы уже догадались, нас интересует второй тип - "Завершение работы". Открываем его и загоняем туда наш скрипт под любым именем.
На этом, в принципе можно и закончить, но остался один нюансик. Если к серверу резервных копий имеется ограниченный доступ, то нам необходимо будет разобраться с правами доступа, а именно:
- На нашей рабочей станции нужно залогиниться под локальным админом.
- Предоставить доступ локальному админу к серверу бэкапов, путём ввода данных действующей учётной записи, имеющей соответствующие права доступа к нашей шаре бэкапов.
Так же стоит отметить, что не надо забывать об автоматизации процесса удаления старых бэкапов. Данный вопрос более подробно расписан в статье Автоматическое избавление от устаревших архивов.
Вот теперь уже можно заканчивать с писаниной.
Жизнь админа должна быть проще... |