Расширение для автоматического резервного копирования сайта школы, с загрузкой в облачное хранилище
Автоматическое резервное копирование
После установки расширения, в «настройках > расширения» появиться «AutoBackup»
Чтобы настроить бекап, нужно:
Создать задание
Создать хранилище
Создать задание крон на хостинге (1 раз в 60 минут).
Пример команды можно посмотреть в настройках Автобэкапов.
Создание задания
Пункт «Общие настройки»
"Хранилище" - куда загружать копии. Нужно обязательно выбрать хотя бы одно хранилище. Иначе нельзя будет создать задание.
"Количество хранимых копий" - количество копий одного задания, которые будут храниться в хранилищах.
"Статус" - включает/отключает задачу для крона
Пункт «Переодичность»
Устанавливает время выполнения задания кроном. В зависимости от ваших нужд, выберете «раз в неделю»/«каждый день». Время лучше всего выбирать ночью, т.е. когда меньше всего посетителей на вашем сайте.
Пункт «Состав резервной копии»
Устанавливает, какие копии будет создавать задание.
«Включить файлы в бекап» — можно будет восстановить файловую систему SM
«Включить базу данных в бэкап» — можно будет восстановить базу данных SM
«Включить базу клиентов в csv» — при запуске задания, будет также создаваться .csv файл с клиентами (аналогичный тому, что создается через «Пользователи > Действие > Экспорт”)
Также в этом пункте справа показывается приблизительный размер бекапа.
Пункт «Расширенные настройки»
«Делить на части» — Бекап будет разбит на части. Размер части регулируется в настройках расширения. Используйте это, если на сервере мало свободного места для создания бекапов.
«Исключить папки» — выберете, какие папки не должны быть в бекапе файловой системы. Если, например, была выбрана папка «load», то в бекап не будет содержать дочерние папки папки «load».
«Исключить файлы» — выберете, какие файлы не должны быть в бекапе файловой системы. Файлы нужно перечислить через перенос строки. Записываются они от корня school-master. Пример:
"/index.php" исключит файл index.php из бекапа.
Создание хранилища
Хранилище можно создать, выбрав «Резервное копирование > Добавить хранилище».
Пункт «основное»
«Название хранилища» - то, как будет отображаться хранилище в админке
«Тип хранилища» - укажите, в какой сервис будут отправляться бекапы.
Пункт «Настройки FTP»
Если файл бекапа необходимо отправить в ftp, то укажите поля:
«Сервер(ip)» - IP адрес сервера(или его домен)
«Порт» - Порт ftp сервера(обычно 21)
«Имя пользователя» - Логин от FTP
«Пароль» - Пароль от FTP
«Путь» - папка, в которую необходимо загрузить бекап. Например, в ftp есть папка «backups». В таком случае, в это поле нужно будет указать «/backups»
Пункт «Настройки Я.Диск»
Для начала нужно создать приложение яндекс диска. Сделать это можно здесь. Указать значения:
"Платформа приложения" - "Веб-сервисы"
"Доступ к данным" - "Чтение всего Диска" & "Доступ к папке приложения на Диске" & "Доступ к информации о Диске" & "Запись в любом месте на Диске" & "Доступ к Яндекс.Диску для приложений"
"YANDEX DISK CLIENTID" - После создания приложения, нужно скопировать со страницы приложения clientid и вставить его в это поле.
"oAuth token" - чтобы его получить, нужно нажать на ссылку ниже "Получить токен". Откроется страница на которой нужно войти в аккаунт яндекс. Затем скопировать код в это поле.
Для начала нужно создать приложение dropbox. Сделать это можно здесь.
"DROPBOX APP KEY" - ключ приложения dropbox
"DROPBOX APP SECRET" - cекретный ключ приложения dropbox
"Access token" - токен пользователя. Получить его можно нажав на ссылку ниже "Получить токен".
«Тип хранилища» - если вы пользуетесь хранилищами «Яндекс облако» или «Selectel», то соответственно выберете их. При этом поле «Адрес (endpoint)» не будет требовать изменений. В противном случае, выберете «Другое».
«Адрес (endpoint)» - Адрес сервера S3. Без указания протокола (http/https)
«Папка (bucket)» - имя бакета, в который нужно будет загрузить файл
«Идентификатор ключа» - по-другому логин для подключения
«Cекретный ключ» - по-другому пароль для подключения
"Путь" - относительный путь от корневой директории school-master. Пример: "/backups", "/load/backups"
Пункт "Google Drive"
Для начала нужно создать приложение google. Сделать это можно здесь. Видео инструкция по созданию приложения здесь (до 3:26).
"Client ID" - айди приложения google
"Client secret" - секретный ключ приложения google
"Redirect url" - адрес вашего сайта. Пример - "http://smdemo.ru"
"ID папки" - если оставить пустым, то бекапы будут загружаться в корень гугл диска. Если вам нужно загружать бекапы в другую папку, то укажите ее айди здесь. Чтобы получить айди папки нужно открыть нужную папку в google drive. Скопировать конец ссылки и вставить его в поле "ID папки" (пример: https://drive.google.com/drive/u/0/folders/1k2n37bp3zVIY2sHb5ckRsEd9KATmd3DN - "1k2n37bp3zVIY2sHb5ckRsEd9KATmd3DN" - это айди папки)
"Код подтверждения" - после заполнения всех полей выше, нажмите на ссылку "Получить". Откроется страница входа в аккаунт google. Авторизуйтесь. Вас перекинет на страницу, которую вы указали в "redirect url". Скопируйте полностью GET-параметр "code" и вставьте его в это поле.
Возможные проблемы при создании бэкапов.
Копии не создаются. Не создано задание крон для автобэкапов.
Создать задание для кронаНе корректные права на папку tmp или её владелец root
Проверить права и владельца папки tmp на хостингеБанально иногда могут быть сетевые сбои, и соединение между вашим сайтом и облачным хранилищем может прерваться.
Это редкие и единичные случаи, но всё же имеют место быть.
Попробовать ещё раз.Задание зависает при ручном запуске.
Если размер архива больше 200Мб, то передача в Я.диск может занят довольно много времени.
Тесты показали скорость около 10Мб/минуту, поэтому в этом случае нужно дольше ждать, либо изменить хранилище на более быстрое.- Ошибка при бэкапе. Не хватает места на хостинге или в облачном хранилище.
Может быть слишком большой объём архива. Проверить можно в настройках задания.
Проверить свободное место на хостинге и в облаке
Дополнительно
В случае, если при ручном бекапе кажется что задание зависло, то проверить работает ли оно, или нужно попробовать заново можно так:
Ввести команду в shell-клиент на сервере - `ps -ef`. Здесь будут отображаться все процессы на сервере
Найти процесс `php <путь>/autobackup_cron.php`.
Если такого нету, то значит крон не запущен
Если есть - значит какие-то действия в нем выполняются, и стоит просто подождать