# Резервное копирование и восстановление данных расширения

Есть три различных способа работы с данными расширения, которые гарантируют их своевременное резервное копирование и восстановление:

- Хранение данных в Хранилище пар «ключ-значение» Plesk,

- Хранение данных в базах данных SQLite,

- Использование хуков резервного копирования SDK.

## Хранилище пар «ключ-значение» Plesk

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

- pm_Client::setSetting() и pm_Client::getSetting() для данных клиента и реселлера,

- pm_Domain::setSetting() и pm_Domain::getSetting() для данных подписки или домена,

- pm_Settings:set() и pm_Settings::get() для любого типа данных.

Таким образом, все данные будут храниться в Хранилище пар «ключ-значение» Plesk, для которого автоматически создается резервная копия, включающая и остальные данные Plesk. Кроме того, данные из хранилища пар «ключ-значение» могут быть безопасно и корректно восстановлены. В итоге можно сказать, что этот подход избавляет вас от необходимости выполнения каких-либо дополнительных шагов по резервному копированию и восстановлению данных расширения.

## Базы данных SQLite

Все данные, сохраненные расширением в локальной базе данных, будут сохранены в файловой системе в папке `/var/` в Plesk (используйте метод pm_Context::getVarDir() для получения ее точного местонахождения). Эта папка автоматически сохраняется Plesk при каждом резервном копировании сервера. Данные расширения будут восстановлены вместе с остальными данными Plesk во время полного восстановления сервера.

Примечание

Данные расширения не включаются в резервную копию, если она выполняется только для подписки или учетной записи клиента или реселлера.

Примечание

Данные расширения не будут восстановлены в случае частичного восстановления (выбранных учетных записей или подписок) из полной резервной копии сервера.

Для обеспечения целостности данных вашего расширения, пожалуйста, имейте в виду следующую важную информацию.

Предупреждение

В ходе восстановления данных Plesk из резервной копии ID некоторых восстановленных объектов Plesk могут измениться. Если ваше расширение сохраняет в базе данных ID таких объектов Plesk, после восстановления они могут устареть и стать некорректными.

Использование GUID или имен в качестве ссылок на объекты Plesk там, где это необходимо, поможет сохранить целостность данных вашего расширения в ходе процессов резервного копирования и восстановления.

## Хуки резервного копирования SDK

В редких случаях, когда специфика определенных данных расширения делает невозможным использование хранилища пар «ключ-значение», вместо него можно использовать механизм хуков резервного копирования SDK.

Классы pm_Hook_Backup_Client, pm_Hook_Backup_Domain и pm_Hook_Backup_Server предоставляют методы `backup()` и `restore()`. В зависимости от характера данных, один или несколько этих классов надо использовать для создания классов расширения, которые наследуют и перезаписывают методы `backup()` и `restore()` с соответствующими инструкциями, объясняющими, как сохранять и восстанавливать тот или иной тип данных.