Plesk предоставляет возможность выбрать удаленное хранилище для хранения ваших резервных копий, например, FTP-сервер. Используя Plesk SDK, вы можете также добавлять другие персональные хранилища резервных копий и разрешать Plesk использовать их для хранения резервных копий.

Класс pm_Hook_Backup_Transport определяет набор методов, которые описывают необходимые функции авторизации, работы с файлами и т.д. С помощью этого хука Plesk Backup Manager узнает о новом персональном хранилище и предоставляет все те же операции и информацию, которые доступны для хранилищ резервных копий, используемых по умолчанию.

Чтобы это проиллюстрировать, Plesk предлагает следующий пример проекта: https://github.com/plesk/ext-cloud-backup-example.

Авторизация

Как разработчик расширения, вы можете выбирать способ обработки авторизации: с помощью OAuth2 или с помощью имени пользователя и пароля.

Имя пользователя и пароль

Имя пользователя и пароль (либо ключ доступа/секретный ключ), используемые для авторизации в персональном хранилище, указываются на форме настроек персонального хранилища pm_Hook_Backup_Transport::getSettingsSubForm(). Введенные имя пользователя и пароль должны проверяться в методе pm_Form_SubForm::isValid().

OAuth2

Авторизация OAuth2 должна быть реализована в методе pm_Hook_Backup_Transport::authorize(). Этот метод всегда вызывается перед отображением формы настроек персонального хранилища, pm_Hook_Backup_Transport::getSettingsSubForm().

Проверка

Метод pm_Hook_Backup_Transport::check() используется для того, чтобы убедиться, что все функции, участвующие в операциях резервного копирования и восстановления (например, CRUD), доступны. Этот метод вызывается перед выполнением каждой операции резервного копирования.

Комментарии

  1. Удостоверьтесь в том, что вы используете хранилище пар «ключ-значение» Plesk для шифрования и безопасного хранения паролей и ключей доступа.
  2. Создайте отдельные папки в корневой папке персонального хранилища для различных объектов, чтобы не смешивать файлы их резервных копий.

Работа с файлами

Запись в персональное хранилище

Методы, отвечающие за запись созданной резервной копии в персональное хранилище, вызываются в следующем порядке:

  1. openFileWrite()
  2. [несколько вызовов] appendFile()
  3. closeFile()

Некоторые хранилища могут требовать указания размера записываемого файла перед началом его загрузки. Эта информация недоступна во время создания резервной копии Plesk. В этом случае резервную копию необходимо разбить на несколько файлов известного размера. Эти файлы должны быть названы следующим образом:

  1. backup.tar
  2. backup.tar1
  3. backup.tar2
  4. ...

После этого Plesk Backup Manager сможет корректно отображать информацию и работать с резервной копией.

Чтение из персонального хранилища

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

  1. openFileRead()
  2. [несколько вызовов] readFile()
  3. closeFile()

Тестирование работы расширения с персональным хранилищем

Чтобы убедиться, что все функции расширения, связанные с резервным копированием и восстановлением, работают корректно, запустите следующую команду:

/opt/psa/admin/bin/pmm-ras --check-repository --debug --verbose --dump-storage=ext://<ext name>/subscription/<id>/ --session-path=/var/log/plesk/PMM