Bitrix резервное копирование на яндекс диск
Так как все больше владельцев сайтов выбирает вместо обычных хостингов размещение на VPS, вопрос бекапов обретает новый смысл. Большинство провайдеров VPS не предоставляют инструментов резервного копирования сервера или предоставляют платные тарифы, что традиционно игнорируется пользователями. В итоге, в случае любой аварии восстановить сайт попросту не из чего.
Да, настройка регулярного резервного копирования позволяет подстраховаться и иметь облачный бекап, но с одной стороны, объем включенного в лицензию облака невелик, с другой - не всегда передача архивов в облако проходит безукоризненно, с третьей - облако доступно только при активной лицензии, а ее продлевают не все.
Альтернативой штатному облаку являются популярные облачные хранилища - Google Drive, OneDrive, Яндекс Диск и прочие. В примере мы остановимся на Яндекс Диске и на то есть 3 причины:
В данной инструкции мы предполагаем, что у пользователя уже настроен штатный механизм резервного копирования и наша задача хранить бекапы этих самых копий на удаленном сервере. Настроить копирование по инструкции можно на любом Unix сервере, но в примерах рассмотрена работа на VPS под управлением CentOS 7 с установленной Виртуальной Машиной Битрикс 7.2.2
Настройка резервного копирования по расписанию на сервере
Данное руководство предполагает наличие базовых навыков администрирования.
1. Установить на VDS утилиту duplicity
2. Создать папку для дампов mysql, в моём случае это /backup_db в корне VDS
3. Создать папку для bash скриптов /backup_scripts и сделать первый скрипт, который будет выполнять бэкап /backup_scripts/backup.sh
4. Запустить скрипт первый раз и проверить результат, в «Бакете» должны появиться файлы.
5. Добавить скрипт в cron для пользователя root на выполнение 2 раза в день, либо с нужной вам частотой.
Яндекс.Облако vs Amazon S3
Разницы между Яндекс.Облаком и Amazon S3 в данном случае для меня нет. Яндекс поддерживает основную часть API Amazon S3, поэтому с ним можно работать используя решения, которые есть для работы с S3. В моём случае это утилита duplicity.
Основным плюсом Яндекса может быть оплата в рублях, если данных будет очень много, то не будет привязки к курсу. В плане скорости Европейские дата-центры Amazon работают соизмеримо с российскими в Яндексе, например можно использовать Франкфурт. Я ранее использовал Amazon S3 для подобных задач, сейчас решил попробовать Яндекс.
Восстановление данных из Яндекс.Облака
1. Сделать папку для восстановления /backup_restore
2. Сделать bash скрипт для восстановления /backup_scripts/restore.sh
Я привожу самый востребованный пример восстановления определенного файла:
3. Запустить скрипт и дождаться результата.
В папке /backup_restore/ вы найдёте файл index.php, который ранее попал в резервную копию.
Более тонкую настройку можете производить под свои нужды.
Минус duplicity
У duplicity есть один минус — нет возможности задать лимит использования канала. С обычным каналом это не создает проблемы, а с при использовании канала с защитой от DDoS с тарификацией по скорости в сутки, я бы хотел иметь возможность установить ограничение в 1-2 мегабита.
Описание
Скрипт, который я предлагаю вашему вниманию, довольно лаконичный. Если исключить задание параметров и вывод отчета, то останется что-то около тридцати строк. И хотя параметры и их названия говорят сами за себя, я всё же опишу их с комментариями.
С какими облаками работает этот скрипт
Установка необходимого ПО и получение разрешений
1. Установим клиент, который будет синхронизировать наши архивы. Для копирования файлов на Диск будем использовать сторонний клиент - ydcmd [1] . Клиент от Anton Batenev для данной задачи более оптимален, чем официальный [2] от "Яши"
После установки клиента необходимо установить в систему python-dateutil
2. Получим токен, необходимый для работы с Диском по API
В ответ вы увидите URL, по которому необходимо перейти для получения кода подтверждения, у меня это код - 3027022. Скопируем его и повторим команду, но с кодом
В ответ получим необходимы нам OAuth token
Преимущества хранения бэкапов в облаке Яндекс.Диск
- Информация в таком месте не повредится вследствие несанкционированного доступа в систему или заражения вирусами. Фактические поломки сервера не окажут никакого влияния на состояние сайта. Достаточно будет восстановить оборудование и войти в систему под своими данными.
- Облачное хранение на Яндекс Диске отлично защищено. Компания следит за тем, чтобы система защиты постоянно совершенствовалась, поэтому каждый администратор уверен, что его данные под надежной защитой.
Гибкая настройка исключений
Вы можете настроить хранение бекапов за определенный день недели, или за определенный месяц, или даже год.
Собственно всё
Спасибо, что уделили внимание и прочли этот пост. Надеюсь, кому-то моя поделка облегчит жизнь, душевное спокойствие, и даже возможно спасёт в тяжелую минуту. Удачи!
UPD: Спасибо vk2 за правильное замечание, что ваш пароль и логин будет виден на сервере в списке процессов.
UPD: Спасибо kosenka, указал, что обязателен закрывающий слеш в пути WebDAV. Действительно, это же папка. Упустил я, но теперь исправил и в примере, и в скрипте.
Так же подсказал, что если curl ругается на сертификат, ему надо указать ключ -k, что позволит ему подключаться к сайтам без или с неправильным сертификатом.
Еще он справедливо заметил, что zip есть далеко не на каждом хостинге. Постараюсь добавить в ближайшее время строчку для кошерного gzip.
Модуль отправляет резервные копии сразу на Яндекс.Диск при ручном и автоматическом создании бэкапа средствами Битрикс.
Работает как с локальными копиями, так и с копиями в облаке Битрикс.
- Недостаточный объем памяти. Объем хранилища облака Битрикс ограничен настолько, что его не хватает даже на двухнедельное копирование. При этом чем больше размер сайта, тем меньше копий можно разместить.
- Мало места на бэкапы на хостинге. Дополнительный объем памяти - на порядок дороже Яндекс.Диска (1 Тб за 209 руб./мес.). При превышении лимитов на объем хранимых данных будут проблемы с загрузкой сайта либо его полная недоступность (не остается места под хранение кэша или баз данных сайта).
- Много времени на размещение бекапа и восстановление сайта из резервной копии. Эта проблема, с которой сталкивается каждый, кто хоть раз пытался восстановить данные из облака собственноручно.
- Информация в таком месте не повредится вследствие несанкционированного доступа в систему или заражения вирусами. Фактические поломки сервера не окажут никакого влияния на состояние сайта. Достаточно будет восстановить оборудование и войти в систему под своими данными.
- Облачное хранение на Яндекс Диске отлично защищено. Компания следит за тем, чтобы система защиты постоянно совершенствовалась, поэтому каждый администратор уверен, что его данные под надежной защитой.
Наш продукт – это быстрое и простое решение проблем, возникающих при необходимости размещения резервных копий на Яндекс Диске. Использовать программу легко, теперь создание бекапов не будет отнимать у администратора много времени и сил, позволяя решать более важные задачи.
Решение отвечает всем запросам пользователей:
- Систему можно настроить таким способом, чтобы она автоматически размещала резервные копии на Яндекс Диске.
- Администратору не нужно самостоятельно вручную удалять уже ненужные копии сайта. Программа имеет необходимые настройки, поэтому все старые копии будут стираться автоматически.
- Можно настроить автоматическое удаление резервных копий на Яндекс Диске – это позволит не контролировать вручную остаток свободного пространства и эффективнее использовать доступные объемы облака.
- Функционал программы позволяет отображать все резервные копии, размещенные на Яндекс Диске. Администратор может видеть их параметры, а также вручную ими управлять.
- Быстрое скачивание любой копии с облачного хранилища на сайт, удаление с него бекапов, при этом на сам диск администратор может не заходить – все действия осуществляются функционалом модуля.
Подключение к Яндекс.Диску:
1. Перейдите по ссылке https://oauth.yandex.ru/ для регистрации своего приложения.
2. На странице сервиса кликните на кнопку "Зарегистрировать новое приложение".
3. На странице формы заполните поле "Название приложения".
4. В блоке "Платформы" выберите "Веб-сервисы", и укажите значение http://*домен_вашего_сайта*/bitrix/admin/apikit.yadisk.callback.php.
Если ваш сайт работает по защищенному протоколу https, то следует указать именно его.
5. В блоке "Доступ" выберите "Яндекс.Диск WebDAV API" -> "Доступ к Яндекс.Диску для приложений".
6. Кликните на кнопку "Создать приложение".
7. Введите в модуль полученные значения "ID" и "Пароль".
8. Нажмите на кнопку "Получить токен".
Если вы все сделали верно, то на странице модуля отобразится ваш токен.
Поле "Папка на Яндекс.Диске": вы можете указать папку (в корне Яндекс.Диска), в которую будут сохраняться резервные копии. Можно указать как новую папку, так и уже существующую.
Поле "Удалять файл резервной копии после передачи": при установке галочки в данное поле - резервная копия на сайте будет удаляться сразу же после успешной передачи на Яндекс.Диск.
Внимание:
Передача резервных копий на Яндекс.Диск может занять некоторое время.
Настоятельно рекомендуем перевести работу агентов на крон.
Для корректной работы модуля необходимо указать верный URL сайта в значении поля "URL сайта (без http://, например www.mysite.com):" в настройках Главного модуля.
Работа решения гарантированна на PHP 7.0 и выше
Режим работы:
10:00 — 19:00 по московскому времени.
Время реакции на обращение – 48 часов.
Выходные дни: суббота и воскресенье.
Модуль отправляет резервные копии сразу на Яндекс.Диск при ручном и автоматическом создании бэкапа средствами Битрикс.
Легко решит проблемы сохранения информации с Вашего сайта Битрикс и обеспечит Ваше спокойствие.
Мы делаем модули, с которыми работаем сами!
Задать вопрос Заказать звонок Установить
Настройка
В папке пользователя создадим файл .ydcmd.cfg с правами 0400 и содержимым
Строчка с verbose = yes необходима для отладки в случае проблем.
Технически настройка По на этом завершена, нам осталось добавить в cron команду на регулярную синхронизацию папки с backup нашего сайта и папки на Яндекс.Диске
Готово. Теперь мы имеем резервную копию резервной копии на удаленном сервере.
Мне было необходимо делать 2 раза в сутки бэкап сайта на «1С-Битрикс: Управление сайтом» (файлов и базы mysql) и хранить историю изменений за 90 дней.
Сайт расположен на VDS под управлением ОС CentOS 7 с установленным «1С-Битрикс: Веб-окружение». Дополнительно делать резервную копию настроек ОС.
- Частота — 2 раза в сутки;
- Хранить копии за последние 90 дней;
- Возможностью достать отдельные файлы за определенную дату, при необходимости;
- Бэкап должен храниться в отличном от VDS дата-центре;
- Возможность получить доступ к бэкапу из любого места (другой сервер, локальный компьютер и т.д.).
Речь идет не о снапшоте для быстрого восстановления всей системы, а именно о файлах и базе и историей изменения.
Исходные данные:
- VDS на виртуализации XEN;
- ОС CentOS 7;
- 1С-Битрикс: Веб-окружение;
- Сайт на базе «1С-Битрикс: Управление сайтом», версия Стандарт;
- Размер файлов — 50 Гб и будет расти;
- Размер базы — 3 Гб и будет расти.
Стандартное резервное копирование встроенное в 1С-Битрикс — исключил сразу. Оно подойдет только небольшим сайтам, т.к.:
- Делает полную копию сайта каждый раз, соответственно каждая копия будет занимать столько же места, сколько занимаю файлы, в моём случае это 50 Гб.
- Резервное копирование делается средствами PHP, что с такими объемами файлов — невозможно, оно перегрузит сервер и не закончится никогда.
- И конечно же ни о каких 90 днях речи идти не может при хранении полной копии.
Из всего вышесказанного оптимальным для меня выбором является инкрементальный бэкап по собственному сценарию в Яндекс.Облако (Object Storage) или Amazon S3 (Amazon Simple Storage Service).
Для этого требуется:
- root доступ к VDS;
- установленная утилита duplicity;
- аккаунта в Яндекс.Облаке.
Инкрементальный бэкап — метод при котором архивируются только измененные с момента последнего бэкапа данные.
duplicity — бэкап утилита использующая rsync алгоритмы и умеющая работать с Amazon S3.
Недостатки хранения бэкапов на хостинге и в облаке Битрикс
- Недостаточный объем памяти. Объем хранилища облака Битрикс ограничен настолько, что его не хватает даже на двухнедельное копирование. При этом чем больше размер сайта, тем меньше копий можно разместить.
- Мало места на бэкапы на хостинге. Дополнительный объем памяти - на порядок дороже Яндекс.Диска (1 Тб за 209 руб./мес.). При превышении лимитов на объем хранимых данных будут проблемы с загрузкой сайта либо его полная недоступность (не остается места под хранение кэша или баз данных сайта).
- Много времени на размещение бекапа и восстановление сайта из резервной копии. Эта проблема, с которой сталкивается каждый, кто хоть раз пытался восстановить данные из облака собственноручно.
Автоматическое удаление резервных копий на Яндек.Диске
Администратору не нужно самостоятельно вручную удалять уже ненужные копии сайта. Программа имеет необходимые настройки, поэтому все старые копии будут стираться автоматически. Это позволит не контролировать вручную остаток свободного пространства и эффективнее использовать доступные объемы облака.
Настройка Яндекс.Облака
1. Необходимо создать платежный аккаунт в Яндекс.Облаке. Для этого нужно авторизоваться в Яндекс.Облаке через свой аккаунт Яндекса или создать новый.
2. Создать «Облако».
3. В «Облаке» создать «Каталог».
4. Для «Каталога» создать «Сервисный аккаунт».
5. Для «Сервисного аккаунта» создать ключи.
6. Ключи сохранить, они нужны будут в дальнейшем.
7. Для «Каталога» создать «Бакет», в него будут попадать файлы.
8. Рекомендую задать лимит и выбрать «Холодное хранилище».
Слушайте, и не говорите, что не слышали
Хочу предупредить, что этот скрипт не претендует на надёжный метод бэкапа часто меняющихся сайтов, сайтов с тяжелой базой данных, или иных взрослых и серьёзных веб-проектов. Но для сайтов-визиток — самое то.
Важное замечание: ваш логин и пароль будет виден в списке запущенных процессов во время закачки.
Автоматическое размещение резервных копий на Яндекс.Диске
О продукте:
Модуль отправляет резервные копии сразу на Яндекс.Диск при ручном и автоматическом создании бэкапа средствами Битрикс.
Работает как с локальными копиями, так и с копиями в облаке Битрикс.
Чтобы задать вопрос, попробовать продукт или добавить в корзину, нажмите на кнопку ниже
Задать вопрос Заказать звонок Установить Купить
Настройки
Логин и пароль, и путь на облаке
Локальный путь для создания архивов
Хотя архивацию и заливку на сервис можно сделать одной строкой, в моём скрипте прежде чем загрузить файл, требуется его где-то создать. Путь для создания архивов задаётся в этой переменной.
Можно размещать хранилище локальных копий внутри сайта, а путь добавить в список исключенных из архивирования путей.
Список баз данных
Записывайте в массив $databases те базы, которые вы хотите архивировать. Вероятно стоит создать пользователя в БД без прав изменения и записи для такого использования.
Список сайтов
Стандартный вид одного из членов массива $sites — списка архивируемых сайтов.
Первый параметр — название сайта. Просто строка, которая будет приписываться к имени архива вашего сайта.
Второй — путь к файлам сайта.
Третий — список директорий, которые стоит исключить из архивации. Исключение отдельных файлов я не предусмотрел, но вы можете легко это добавить самостоятельно. Если вы создаёте архивы внутри одного из своих сайтов, то можете исключить это хранилище.
Пример:
На этом конфигурация скрипта заканчивается, и он готов трудиться во благо революции… общества… вебадмина.
Управление резервными копиями на Яндекс.Диске
Функционал программы позволяет отображать все резервные копии, размещенные на Яндекс Диске. Администратор может видеть их параметры, а также вручную ими управлять.
Быстрое скачивание любой копии с облачного хранилища на сайт, удаление с него бекапов, при этом на сам диск администратор может не заходить – все действия осуществляются функционалом модуля.
Зачем вам наш модуль
Наш продукт – это быстрое и простое решение проблем, возникающих при необходимости размещения резервных копий на Яндекс Диске. Использовать программу легко, теперь создание бекапов не будет отнимать у администратора много времени и сил, позволяя решать более важные задачи.
Чтобы задать вопрос, попробовать продукт или добавить в корзину, нажмите на кнопку ниже
Задать вопрос Заказать звонок Установить Купить
Чтобы задать вопрос, попробовать продукт или добавить в корзину, нажмите на кнопку ниже
В качестве вывода
Резервирование в Яндекс.Облаке или Amazon S3 дает независимую копию сайта и настроек ОС к которой можно обратится с любого другого сервера или локального компьютера. При этом данная копия не видна ни в панели управления хостингом, ни в админке битрикса, что дает дополнительную безопасность.
При самом печальном исходе можно собрать новый сервер и развернуть сайт за любую дату. Хотя наиболее востребованным функционалом будет возможность обратиться к файлу за определённую дату.
Использовать данную методику можно с любыми VDS или Dedicated серверами и сайтами на любых движках, не только 1С-Битрикс. ОС также может быть отличная от CentOS, например Ubuntu или Debian.
Позавчера хабраюзер vasiatka в посте №206752 поделился с хабрасообществом, а следовательно и со всем остальным миром, продуманным и весьма развитым классом для работы с Яндекс.Диском. Некоторое время назад я тоже стал использовать этот сервис для хранения там бэкапов. Хочу поделиться значительно более коротким вариантом скрипта на php, который делает архивы базы данных и файлов сайта, и заливает их по WebDAV. Возможно кому-то и он придётся по душе.
Если кто-то хочет сразу взглянуть на полный листинг — он внизу.
Читайте также: