Научная статья на тему 'Использование функциональных возможностей PowerShell для выполнения процедур резервного копирования данных'

Использование функциональных возможностей PowerShell для выполнения процедур резервного копирования данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
666
75
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
РЕЗЕРВНОЕ КОПИРОВАНИЕ / ХРАНЕНИЕ ДАННЫХ / СОХРАННОСТЬ ИНФОРМАЦИИ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Львов Н.С.

Описывается проблема сохранности данных и их архивации, а также ее решение при помощи разработки специализированного ПО на языке Power Shell. Приведены алгоритм резервного копирования файлов виртуальной машины, алгоритм архивирования данных.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Use the PowerShell language functionality to perform data backup procedures

This paper describes the problem of data preservation and archiving, as well as its solution through the development of highly specialized in Power Shell language. Presents developed algorithm backup of the virtual machine files, data archiving algorithm.

Текст научной работы на тему «Использование функциональных возможностей PowerShell для выполнения процедур резервного копирования данных»

Cloud of Science. 2015. T. 2. № 4 http:/ / cloudofscience.ru ISSN 2409-031X

Использование функциональных возможностей PowerShell для выполнения процедур резервного копирования данных

Н. С. Львов

Московский технологический университет 119571, Москва, пр. Вернадского, 86

e-mail: lvov_ns@mgupi.ru

Аннотация. Описывается проблема сохранности данных и их архивации, а также ее решение при помощи разработки специализированного ПО на языке Power Shell. Приведены алгоритм резервного копирования файлов виртуальной машины, алгоритм архивирования данных. Ключевые слова: резервное копирование, хранение данных, сохранность информации.

1. Введение

В наше время довольно актуальна проблема сохранности данных, хранящихся на персональных компьютерах и серверах в организациях. Несмотря на рост популярности твердотельных накопителей [1], жесткие диски остаются основным видом накопителей для хранения данных. За счет наличия в жестком диске движущихся компонентов (шпиндель, устройство позиционирования), его надежность ниже, чем прочих компонентов ПК. Таким образом, достаточно высока вероятность потери или повреждения данных при выходе жесткого диска из строя. Самым лучшим способом защиты последних является регулярное резервное копирование.

Для выполнения последнего существует огромное количество разнообразных программных средств, как коммерческих, так и свободно-распространяемых. Они позволяют выполнять резервное копирование на внешние носители, сетевые ресурсы, магнитные ленты, а также задавать расписание, по которому будет выполняться резервное копирование.

Существенным недостатком подобного ПО является, как ни странно, его «универсальность», что ведет к перегруженности функциями, а это приводит к усложнению ПО и возникновению сложностей при адаптации его под решение нестандартных задач. В статье предлагается разработка средств резервного копирования, предназначенных для решения конкретных задач с использованием средств языка Windows Power Shell.

2. Язык Windows Power Shell

Windows Power Shell является интерпретируемым языком высокого уровня. Интерпретатор языка — программа powershell.exe входит в состав ОС Windows по умолчанию, начиная с версии Wndows Vista. Windows PowerShell построен на базе платформы Microsoft .NET Framework и интегрирован с ним. Дополнительно PowerShell предоставляет удобный доступ к COM, WMI и ADSI, также позволяет выполнять обычные команды командной строки [2].

В качестве операторов языка используются так называемые «командлеты» (от англ. «cmdlets»), построенные по принципу глагол-существительное. Пример ко-мандлета — «Get-Item». Он получает список содержимого контейнера. Для некоторых командлетов существуют псевдонимы, позволяющие сократить командлет до его аббревиатуры либо же аналогичной команды в языке команд интерпретатора cmd.exe (предшественник powershell в среде Windows NT). Так, Get-Item можно заменить псевдонимом gi, а Copy-Item — более привычным copy из среды MS-DOS.

Написанные на PowerShell программы располагаются в файлах *.ps1, и выполняются интерпретатором при обращении к ним. Благодаря тому, что интерпретатор Power Shell присутствует по умолчанию в каждой современной ОС Windows, написанные на данном языке программы обладают полной совместимостью с 80% современных ПК. Однако за счет того, что Power Shell является интерпретируемым, а не компилируемым языком, скорость выполнения программ, написанных на нем, может быть ниже, чем у скомпилированных Win32-приложений. Помимо этого, нельзя не обратить внимание на главное достоинство Power Shell — файлы *.ps 1 являются текстовыми, и любой пользователь может доработать и программу без необходимости перекомпиляции последней.

Однако нельзя не отметить, что подобный подход может существенно понизить безопасность системы. Поэтому для предотвращения выполнения неопознанных ps1-скриптов в ОС Windows это запрещено настройками безопасности по умолчанию. При необходимости, можно разрешить запуск тех этих скриптов либо же разрешить запуск только известных.

3. Примеры решения задач резервного копирования с использованием Power Shell

Пример 1. Необходимо сделать резервную копию виртуальной машины, запущенной в среде виртуализации Windows Hyper-V Server [3]. В этом случае копирование файлов виртуальной машины не будет полноценным резервным копированием, так как вместе с ними не будет скопировано состояние ОЗУ виртуальной машины в текущий момент времени. Необходимо воспользоваться штатной функцией

создания контрольной точки, после чего произвести экспортирование виртуальной машины из этой контрольной точки и удалить контрольную точку. Стороннее ПО не в состоянии справиться с такой задачей. Однако, при установке на сервер Hyper-V интерпретатор Windows Power Shell пополняется новыми командлетами для управления Hyper-V.

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

Ниже приведен пример кода (см. рис. 1). Здесь \\storage\backup — это путь к сетевому хранилищу резервных копий, может быть изменен на требуемый. Общий алгоритм работы программы для резервного копирования виртуальных машин приведен на рис. 2.

$VMName=$args[0] # получаем из первого аргумента командной строки имя

# виртуальной машины - это значение переменной $VMName $ServerName=$args[1] # получаем из второго аргумента командной строки имя

# сервера виртуализации - это значение переменной $ServerName $d=(get-date -format dd-MM-yyyy_HH-mm-ss) # получаем текущую время и дату

# и присваиваем это значение переменной $d Checkpoint-VM -Name $VMName -ComputerName $ServerName -SnapshotName $d # Создаем контрольную точку для виртуальной машины

$test=(Test-NetConnection -ComputerName storage.home.local).PingSucceeded

# Задаем булевой переменной значение, соответствующее

# доступности сетевого сервера для хранения резервных копий

If ($test=$true ) # Если сервер доступен

{

Write-Host 'Сервер доступен, подключаем сетевой диск экспорт'

# Вывод уведомления New-PSDrive -name M -PSProvider FileSystem -Root

"\\storage\backup" # Подключаем сетевой диск с сервера

Export-VMSnapshot -Name $d -VMName $VMName -Path M:\ -ComputerName $ServerName # Экспортирование

Write-EventLog -LogName Application -Source HyperV_Backup -EventID 777 Information -message 'Архивация выполнена успешно' # Запись

# в журнал событий Remove-VMSnapshot -Name '$d' -VMName $VMName -ComputerName $ServerName # Удаление контрольной точки

}

Else # в случае недоступности сервера

{

Write-Host 'Сервер недоступен, экспорт невозможен' # вывод уведомления

}

Рисунок 1. Пример кода для резервного копирования виртуальных машин

Рисунок 2. Блок-схема алгоритма программы для резервного копирования

виртуальных машин

Для запуска данной программы на выполнение необходимо вызвать интерпретатор PowerShell с аргументом командной строки, содержащим путь к р81-файлу с исходным кодом, а также еще два аргумента командной строки — первый, соответствующий имени виртуальной машины, второй — имени сервера виртуализации, на котором выполняется данная виртуальная машина:

Powershell <путь_к_файлу_с_исх_кодом>\backup.ps1 <Имя_вирт_машины> <имя_сервера_вирт>

Данную команду можно выполнять по требованию либо по расписанию с использованием планировщика Windows.

Пример 2. Необходимо сделать резервную копию данных из филиала организации в головной офис при нестабильном и медленном соединении между ними.

Данная проблема довольно широко распространена в нашей стране, особенно для региональных филиалов. Использование специализированного ПО для архивации в данном случае невозможно, так как оно передает резервные копии в заданное местонахождение (на сервере головного офисе) через Интернет «на лету», т. е. в процессе архивации. Низкая скорость передачи может существенно замедлить сам процесс архивации данных.

Предлагается разделить процесс архивации и процесс передачи архивной копии на сервер, а также добавить механизм оценки размера архивной копии и возможность взаимодействия с пользователем для начала передачи копии, например, в нерабочее время.

Главным преимуществом данного алгоритма является его интерактивность. По окончании процесса архивации размер архива выводится пользователю вместе с приглашением на подтверждение передачу архива по сети.

Таким образом, у пользователя есть возможность начать передачу архива по сети тогда, когда канала связи между филиалом и центральным офисом менее загружен, например в конце рабочего дня.

Отдельно стоит рассмотреть подпрограмму, выполняющую создание zip-архива (см. рис. 3).

function g1oba1:SEND-ZIP (Szipfilename, $fi1ename) # Объявление

# функции-командлета send-zip $zipHeader=[char]80 + [char]75 + [char]5 + [char]6 + [char]0 + [char]0 + [char] 0 + [char] 0 + [char]0 + [char]0 + [char]0 + [char]0 + [char]0 + [char] 0 + [char] 0 + [char]0 + [char]0 + [char]0 + [char]0 + [char]0 + [char]0 + [char]0 # Присвоение переменной значения,

# соответствующего стандартному заголовку zip-архива If ( (TEST-PATH $zipfi1ename) -eq $FALSE ) { Add-Content $zipfi1ename -value $zipHeader } # Проверка существования пути для записи $Exp1orerShe11=NEW-OBJECT -comobject 'Shell.Application' # Обращение

# к объекту Проводника в иерархии .NET

$SendTo-

Zip=$Exp1orerShe11.Namespace($zipfi1ename.tostri ng()).CopyHere($filename. ToString()) # Архивация

Рисунок 3. Пример кода для создание архива

Блок-схема алгоритма резервного копирования при медленном соединения приведен на рис. 4.

Передана аркива

Рисунок 4. Блок-схема алгоритма резервного копирования при нестабильном и медленном соединении

Подпрограмма является функцией языка PowerShell, представленной в виде командлета, входными параметрами которой являются путь к создаваемому архиву и путь к архивируемому каталогу. Для возможности вызова этой подпрограммы psl-файл с кодом должен быть вызван по имени из основной программы, а после этого возможно использование объявленной в нем функции-командлета.

4. Заключение

Рассмотрены два примера использования языка Power Shell для решения нестандартных задач в области резервного копирования и управления резервными копиями. Его использование может быть особенно актуально в динамической распределенной инфраструктуре. Важной особенностью Power Shell как интерпретируемого языка является возможность изменения кода программы в любом текстовом редакторе без перекомпиляции.

Литература

[1] Орлов С. Как новые технологии повлияют на перспективы применения HDD в системах хранения корпоративного класса // Журнал сетевых решений LAN. 2015. № 9. С. 56-61.

[2] Возможности Windows PowerShell [Электронный ресурс] URL: https://technet. microsoft.com/ru-ru/library/dn425048.aspx

[3] Управление виртуальными машинами в среде виртуализации Hyper-V [Электронный ресурс] URL: http://windowsnotes.ru/virtualization/hyper-v-v-windows-8-1-chast-4/

Автор:

Львов Никита Сергеевич — преподаватель кафедры технической механики (ОП-2), Московский технологический университет (МИРЭА, МГУПИ)

Use the PowerShell language functionality to perform data backup procedures

N. S. Lvov

Moscow Technology University 86 pr. Vernadskogo, Moscow, Russia, 119571

e-mail: lvov_ns@mgupi.ru

Abstract. This paper describes the problem of data preservation and archiving, as well as its solution through the development of highly specialized in Power Shell language. Presents developed algorithm backup of the virtual machine files, data archiving algorithm.

Key words: backup, data storage, security of information.

References

[1] Orlov S. (2015) Zhurnal setevyh reshenij LAN, 9:56-61. [In Rus]

[2] https://technet.microsoft.com/ru-ru/librarv/dn425048.aspx

[3] http://windowsnotes.ru/virtualization/hvper-v-v-windows-8-1-chast-4/

i Надоели баннеры? Вы всегда можете отключить рекламу.