Автоматическое резервное копирование на Яндекс.Диск. Резервное копирование данных в «облако

В предыдущих двух статьях я настраивал LAMP на VPS и прикручивал к нему nginx . Следующее, о чем сразу начинаешь думать — как бы все это не потерять. То есть речь заходит о резервном копировании.

Обсудим по порядку: что, куда и как бэкапить.

Что

  1. Все конфиги, которые вы с кропотливо редактировали (/etc )
  2. Все пользовательские файлы (/home , /root )
  3. Базы данных (будем иметь в виду MySQL)

Куда

Нынче всё уходит в «облака». Резервные копии хочется складывать туда же.

Весьма интересным вариантом для хранения бэкапа оказался Яндекс.Диск . У него есть несколько преимуществ:

  • Бесплатные 10 Гб
  • Он находится в России, и файлы очень быстро на него заливаются
  • Умеет работать по протоколу WebDAV, что позволяет загружать на него данные из консоли с помощью команды curl

Как

Вот рецепт. Логинимся root-ом и создаем скрипт:

Chmod 0700 backup-now.sh

Текст скрипта будет примерно таким:

#!/bin/bash SERVER_NAME="server1" TIME=`date +%Y-%b` FS_FILE=/tmp/$SERVER_NAME-fs.$TIME.tar.gz MYSQL_FILE=/tmp/$SERVER_NAME-mysql.$TIME.sql.gz # Archiving filesystem tar -czf $FS_FILE /etc /root /home # Archiving databases mysqldump -u root --password=qwerty --all-databases | gzip > $MYSQL_FILE # Uploading to the cloud curl --user USER:PASSWORD -T "{$FS_FILE,$MYSQL_FILE}" https://webdav.yandex.ru/ # Cleanup unlink $FS_FILE unlink $MYSQL_FILE

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

Теперь для автоматизации надо добавить симлинк на backup-now.sh в /etc/cron.daily (или /etc/cron.weekly). Только имейте в виду, что на некоторых системах (в частности, на Debian) у симлинка надо убрать расширение ().

Переменная $TIME подобрана так, что у вас будут скапливаться бекапы от последнего числа каждого месяца. Если не хотите захламлять облако, то это можно убрать из скрипта, однако практика показывает, что старые копии могут оказаться полезными. Просто надо будет периодически удалять старьё.

А если не хочу Яндекс.Диск ?

Очевидно, заливать можно на любой ресурс, поддерживающий WebDAV. Существуют сервисы, открывающие доступ по WebDAV к Dropbox или Google Drive (например, Otixo , SMEStorage , DropDAV). Ходят слухи, что SkyDrive работает через WebDAV. А также есть надежда , что поддержка появится в Дропбоксе из коробки.

P.S. Шифрование архивов с помощью GnuPG

Поскольку бекапы содержат кучу секретной информации (пароли, данные), то имеет смысл их шифровать:

GPG_COMMAND="gpg -c -z 0 --batch --passphrase XXXXXXXXXX" FS_FILE=/tmp/$SERVER_NAME-fs.$TIME.tar.gz.gpg MYSQL_FILE=/tmp/$SERVER_NAME-mysql.$TIME.sql.gz.gpg # Archiving filesystem tar -cz /etc /root /home | $GPG_COMMAND > $FS_FILE # Archiving databases mysqldump -u root --password=qwerty --all-databases | gzip | $GPG_COMMAND > $MYSQL_FILE . . .

Приветствую вас, дорогие читатели моего блога. Вы, наверное, слышали о программе, позволяющей хранить файлы на сервере Яндекса. Если нет, добро пожаловать на soft.yandex.ru - она там есть.

Так вот. Несколько дней назад, когда я просматривал сайты, забрёл на блог, на котором был опубликован скрипт, позволяющий сохранять резервную копию сайта на Яндекс диск. В этой статье я подробно расскажу о нём.

Что нам потребуется

  • 1. Сервер, логин, пароль и название базы данных mysql, если, конечно, ваш сайт работает с этой базой данных;
  • 2. Путь от корня диска до вашего сайта (спрашивайте у службы поддержки хостинга);
  • 3. e-mail и пароль, которые вы используете для входа в Яндекс (это и данные от Яндекс диска).

Работа с файлом бекапа сайта на Яндекс диск

Сначала надо изменить адрес mysql сервера. В большинстве случаев это localhost, поэтому я там его и оставил, если же другой, заменяем его на свой в строке

$dbhost = "localhost"; //Адрес MySQL сервера.

В строчке ниже, заменяем "database_user" на своё значение имени пользователя базы данных mysql.

"database_name" - на название базы данных mysql.

Вместо "site_dear_hear" вставляем свой путь к сайту от корня диска.

После этого, переходим к настройке Яндекс диска:

Всё. Сохраняем файл и загружаем на сервер.

Не рекомендую его загружать в корневой каталог сайта, потому что будут постоянно обращаться к нему всякие роботы, из-за чего Яндекс диск будет заполняться лишними копиями бекапов. Лучше создать папку, например "a3hd7siq8a7s9xeeewwwerw-0-032-_2", чтобы никто, кроме вас и cran не знал, где он у вас.

Cran - это планировщик заданий: специальная программа, при помощи которой вы можете ставить запуск скриптов по расписанию, но как им пользоваться не знаю, поэтому здесь помочь не смогу.

Что делать, если несколько сайтов

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

  • 1. ;
  • 2. Замените site1.ru, site2.ru и т. д. на адреса своих сайтов. Кроме этого, не забудьте прописать после него папку, в которой расположен этот скрипт;
  • 3. Сохраните изменения и загрузите на сервер, поместив его как можно дальше от корневой папки сайта.

Если у вас меньше пяти сайтов, просто удалите строки, имеющие вид:

Echo " "; $response = file_get_contents("http://site5.ru/beckup.php"); echo iconv("Windows-1251", "utf-8", $response);

Если у вас сайт в зоне.рф, вам, перед тем, как прописывать адрес, придётся переводить в Panycode

Надеюсь, что статья вам была полезна.

Жду комментариев.

О резервном копировании на внешние носители в Windows 7 или 8.1 написано немало. Но как быть, если вы используете несколько устройств (например, компьютер, планшет, телефон под управлением Windows)? И вам срочно нужны данные, скажем, документы, хранящиеся на компьютере или каком-то другом устройстве? На такой случай лучше всего создать резервную копию в «облаке». Кстати, туда же я рекомендовал бы поместить и ваши архивы. Например, архивы тех же документов. Кстати, это очень полезно и в том случае, если вы используете в своем ноутбуке твердотельный диск SSD вместо обычного жесткого диска. В данной статье мы рассмотрим основные «облачные» хранилища – OneDrive от компании Microsoft, Google Диск, Dropbox и Яндекс Диск.

Использовать OneDrive весьма выгодно, если вы работаете с Windows 8.1. В таком случае объем хранилища может составить 15 Гбайт, а если вы еще и счастливый обладатель подписки Office 365, то объем хранилища OneDrive и вовсе не ограничен. Новые пользователи Google Drive начинают с 15 Гбайт. Dropbox поначалу предоставляет лишь 2 Гбайт свободного пространства, но большинство пользователей быстро увеличивает этот объем до 5 Гбайт и более. Стоимость подписки на 1 Tбайт составляет 10 долл. в месяц или 100 долл. ежегодно.

Все службы позволяют указать, какие файлы и папки вы хотите синхронизировать с «облаком». Это означает, что вы можете оставить некоторые файлы и папки только в своем «облачном» диске и загружать их по мере необходимости. Давайте подробно разберем, как это делается.

Для начала работы с Dropbox вам необходимо зайти на сайт www.dropbox.com, зарегистрироваться и выбрать соответствующий тарифный план для персонального использования (см. экран 1). После этого вам будет предложено загрузить соответствующий пакет для установки (см. экран 2).

Экран 1. Dropbox
Экран 2. Регистрация в?Dropbox

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

Выборочная синхронизация при использовании систем Windows 7, 8 или 8.1 выглядит следующим образом. Для создания правил выборочной синхронизации щелкните правой клавишей мыши по значку Dropbox в панели задач - откроется окно настроек (см. экран 3).



Экран 3. Настройки учетной записи

Фактически, выборочная синхронизация позволяет указать, какие папки вы хотите синхронизировать с Dropbox. Это безусловно удобно, если у вас в руках нетбук или компьютер с небольшим жестким диском (и нет с собой внешнего). Учтите, что папки для выборочной синхронизации должны находиться внутри вашей папки Dropbox. Таким образом, для выборочной синхронизации необходимо скопировать файлы, которые вы хотите перенести (скопировать) в «облачное» хранилище Dropbox в соответствующую папку на диске.

Если вы отмените синхронизацию общей папки через меню «Выборочная синхронизация» в окне настроек, она перестанет синхронизироваться только с вашим компьютером. При этом сама папка останется в Dropbox и будет синхронизироваться с учетными записями других имеющих к ней доступ пользователей. Чтобы перестать пользоваться общей папкой, можно либо покинуть ее на сайте Dropbox, либо (если вы сами ее создали) отменить общий доступ к ней.

Для того чтобы загрузить Google Disk, вам необходимо воспользоваться своей учетной записью к службам Google, а затем выбрать службу Google Disk (см. экран 4).

Можно настроить следующие параметры.

Аккаунт

  • Отключить аккаунт. Синхронизируйте папку Google Диска с другим аккаунтом Google (не рекомендуется).
  • Расширить пространство для хранения данных. Приобретите дополнительное пространство.

Параметры синхронизации

  • Синхронизировать только некоторые папки с этим компьютером. Установите флажки рядом с папками из раздела «Мой диск», чтобы включить синхронизацию. Снимите флажки рядом с папками, которые не нужно синхронизировать.
  • Синхронизировать объекты, к которым у меня есть доступ. Если вы работаете в новом интерфейсе Диска, переместите файлы и папки из раздела «Доступные» в папку «Мой диск», чтобы синхронизировать их с компьютером. Если вы пользуетесь классической версией Диска, добавьте папки и файлы из раздела «Доступные мне» в папку «Мой диск».

Расширенные

  • Запускать Google Диск автоматически при включении компьютера. Google Диск будет запускаться и синхронизировать папку на компьютере с разделом «Мой диск».
  • Отправлять отчеты о сбоях и статистику использования в Google. Отправляйте информацию в Google, чтобы можно было улучшить работу сервиса.
  • Прокси-сервер. Вам доступны две функции: «Прямое подключение» и «Автоматически определять настройки прокси-сервера».
  • Прочие. Отображение значков статуса синхронизации файлов.

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

1. Нажмите на значок Google Диска.

  • На компьютерах Mac его обычно можно найти на панели «Меню» в правой верхней части экрана.

2. Выберите «Настройки».

3. Снимите флажок «Синхронизировать только некоторые папки с этим компьютером».

4. Нажмите кнопку «Применить изменения».

Раздел «Мой диск» (все файлы или отдельные папки). Все файлы и папки из раздела «Мой диск» синхронизируются с папкой Google Диска на вашем компьютере. Чтобы настроить синхронизацию отдельных папок, выполните следующие действия:

1. Переместите файлы в папки, которые планируете синхронизировать.

2. Нажмите значок Google Диска на рабочем столе.

  • На компьютерах Mac его можно найти на панели «Меню» в правой верхней части экрана.
  • На компьютерах Windows значок находится на панели задач в правом нижнем углу экрана.

3. Выберите «Настройки».

4. Установите флажок «Синхронизировать только некоторые папки с этим компьютером».

5. Выберите папки, которые необходимо синхронизировать с папкой Google Диска.

6. Нажмите кнопку «Применить изменения».

Работа с OneDrive

Если вы используете операционную систему Windows 8.1, то хранилище One Drive предоставляется вам по умолчанию. OneDrive - бесплатное интернет-хранилище, предоставляемое вместе с учетной записью Microsoft. Начать использование OneDrive просто. Вы можете добавить в OneDrive файлы, уже сохраненные на компьютере, скопировав или переместив их. Вы можете сохранять новые файлы в OneDrive, чтобы использовать их с любого устройства и делиться ими с другими. А если в вашем компьютере есть встроенная камера, вы можете автоматически сохранять копии фотографий в OneDrive, чтобы всегда иметь резервную копию. В отличие от предыдущих хранилищ, вы сможете сохранять файлы непосредственно в One Drive, не сохраняя их на компьютере.

Функции классического приложения встроены в Windows

OneDrive синхронизирует файлы при регистрации в системе с учетной записью Microsoft. Если классическое приложение устанавливается на компьютере под управлением Windows 8.1, программа установки не появляется. Будет установлен компонент, который позволит задействовать Office для работы с документами OneDrive одновременно с другими пользователями, но другие компоненты не будут установлены. Если вы работаете под управлением Windows 7 или 8, то сможете загрузить классическое приложение для управления OneDrive по адресу onedrive.live.com/about/en-us/download/.

Для пользователей Windows 8.1 достаточно сделать следующее (см. экран 6):

  1. Откройте OneDrive в Windows Explorer.
  2. Щелкните правой клавишей по файлу (папке) и выберите «Сделать доступным автономно» или «Сделать доступным только через Интернет».

Как показано на экране 8, для синхронизации Яндекс Диска достаточно скопировать соответствующие файлы в папку Яндекс.Диск. На первый взгляд такой подход к синхронизации более всего напоминает Google Disk. Отчасти это верно.

Используя веб-приложение Яндекс.Диск вы сможете скачать соответствующее приложение для Windows. Для выборочной синхронизации необходимо войти в панель настроек Яндекс Диска и выбрать вкладку «Синхронизация». Если вы снимете галочку с соответствующей папки, она синхронизироваться не будет. Чтобы загрузить файлы в папку, синхронизация которой отключена, достаточно просто перетащить файлы в нее в Проводнике. Таким образом, в данном случае содержимое корневой папки Яндекс Диска синхронизируется всегда, а содержимое подпапок может быть синхронизировано по вашему выбору.

Основное отличие Яндекс Диска от Dropbox и Google Disk состоит в том, что сохранять файлы в Яндекс.Диск вы можете непосредственно из Microsoft Office.

Таким образом, используя «облачные» хранилища, вы можете не только увеличить свободное место на своем жестком диске, но и обеспечить резервную копию наиболее важных ваших файлов (документы, фото и т.д.). Если же сравнивать удобство использования выборочной синхронизации, то вывод напрашивается однозначный. И у Dropbox, и у Google Disk выбор настраивается на уровне папки. Таким образом, нужно зайти в диалог «Настройки» соответствующей службы и вручную указать, какие папки синхронизируются, а какие нет. Решение же, поддерживающее контекстное меню в Проводнике и позволяющее настроить синхронизацию и размещение файлов существует на сегодня только у Microsoft.

– удобное, функциональное и дешёвое решение. Handy Backup позволяет обойтись без использования популярного интерфейса WebDAV для Яндекс.Диска, используя вместо него прямой доступ.

Автоматическое резервное копирование на Яндекс.Диск

С помощью Handy Backup вы можете выполнять бэкап на Яндекс.Диск для любых данных в автоматическом режиме, по расписанию с интервалами от месяцев до минут или по событию, а также вручную. Вы можете автоматизировать копирование любых данных, таких, как:


Пользовательские данные:

  • Файлы и папки (с возможностью поиска по маске имени)
  • Библиотеки Windows, пользовательские папки
  • Microsoft Outlook, файлы и папки других почтовых клиентов

Серверные типы данных:

  • Базы данных MS SQL, MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes
  • Microsoft Exchange
  • Контент FTP, SFTP или FTPS серверов с шифрованием по SSL/TLS
  • Веб-сайты (статический и динамический контент)


Виртуальные машины и хранилища:

  • Hyper-V, VMware
  • Серверы, массивы и хосты виртуальных машин
  • Облака Google Диск, Dropbox, Amazon S3, OneDrive, Box, 4shared и другие
  • Любые облака по интерфейсу WebDAV

Прочие типы данных:

  • Образы дисков
  • Данные 1С в файловой и SQL-версиях, для 1С 7.7 и решений 1С 8, например, 1С 8.2
  • Файлы, папки и библиотеки сетевых машин (для сетевых решений)
  • Реестр Windows

Преимущества решения Handy Backup для организации бэкапа на Яндекс.Диск

Защита ваших данных

Handy Backup обладает встроенными средствами шифрования и сжатия данных в архив под паролем, позволяющими безопасно передавать коммерческую информацию по открытым сетям и хранить её на публичном облачном сервисе без опасений за целостность данных.

Сертификация продукта

Помимо наличия официальных сертификатов совместимости со всеми серьёзными коммерческими решениями, перечисленными в списке, решение Handy Backup также внесено в Единый реестр российского программного обеспечения для ЭВМ .


Открытое хранение копий в исходных форматах

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


Скачать

Купить!

Версия 7.9.4 от 15 сентября 2017. 66.1 MB
Программа резервного копирования Handy Backup. 7400 RUB за лицензию

Решение Office Expert позволяет копировать любые типы данных с одного компьютера на Яндекс.Диск автоматически по расписанию, как напрямую, так и по WebDAV. Бесплатный пробный период 30 дней!

Как создать задачу резервного копирования на Яндекс.Диск в Handy Backup?

Вместо устаревшего WebDAV бэкапа на Яндекс.Диск для организации резервного копирования теперь применяется новый плагин Handy Backup Yandex Disk с доступом к облачному сервису через интерфейс RestAPI. Чтобы воспользоваться им, выполните следующие действия:

  1. Откройте Handy Backup и создайте новую задачу с помощью кнопки на панели или меню.
  2. Выберите задачу резервного копирования.
  3. Перейдите к Шагу 2 и выберите нужные данные для создания резервной копии.
  4. На Шаге 3 выберите в списке хранилищ плагин Yandex.Disk , щёлкните по нему дважды.


  1. В открывшемся окне дважды щёлкните “Новая конфигурация” . Откроется новый диалог.

  1. Нажмите кнопку “Подключиться к Yandex.Disk” . Вы будете перенаправлены в браузер.
  2. В окне браузера введите логин и пароль для доступа к Яндекс.Диску. Подтвердите выбор.


  1. Вернитесь в окно Handy Backup и выберите созданную конфигурацию.
  2. Далее продолжайте настраивать задачу как обычно. На Шаге 6 укажите расписание.
  3. На последнем шаге дайте вашей задаче имя и завершите работу мастера создания задач.

Ваша задача автоматического резервного копирования на Яндекс.Диск готова к выполнению, и будет в дальнейшем запускаться с заданной периодичностью в заданное время. Вы можете также в любой момент запустить её вручную.

Замечание: точно так же создаются задачи для копирования данных в другие облачные сервисы: Google Drive, Dropbox, Microsoft OneDrive, Amazon S3, Box и так далее.

Видеоурок о резервном копировании Яндекс Диска

В данном видеоуроке рассмотрена инструкция по резервному копированию на Яндекс Диск, а также по бэкапу данных, хранящихся в данном облаке.

Внимание: Данная видео инструкция основана на предположении, что ПО Handy Backup уже установлено на компьютере. Если это не так, пожалуйста, скачайте и установите Handy Backup перед тем как начать обучение в соответствии с видеоуроком.

Резервное копирование на Яндекс.Диск через WebDAV

Несмотря на наличие нового инструмента для прямого доступа к сервису Яндекс.Диск, в некоторых случаях может оказаться более предпочтительным традиционный способ – например, бэкап сайта на Яндекс.Диск через WebDAV с использованием внешней утилиты криптографии.

Handy Backup полностью поддерживает резервное копирование на Яндекс.Диск по протоколу WebDAV.

  • Чтобы воспользоваться WebDAV для доступа к Яндекс.Диску, выберите плагин WebDAV на Шаге 3, пользуясь вышеописанным алгоритмом создания задачи. В диалоговом окне конфигурации WebDAV введите ваши параметры доступа к Яндекс.Диску.

Внимание: при использовании WebDAB бэкап на Яндекс.Диск может оказаться несколько медленнее, чем при прямом доступе. Например, резервное копирование 1С на Яндекс.Диск обычно занимает существенное время при использовании WebDAV.

Автоматический бэкап на Яндекс.Диск с помощью Handy Backup стал ещё проще и быстрее с внедрением нового инструмента, использующего прямой доступ к облачному сервису Яндекс. Попробуйте его самостоятельно, скачав бесплатную 30-дневную пробную версию!

Привет друзья!

Прошло всего 4 года с тех пор, как я писал в блог крайний раз. За это время накопилось большая база знаний и опыта. Было проделано множество интересной работы и завершено множество интересных проектов. О некоторых из них (читай: "не нарушая коммерческой тайны") я постараюсь рассказать в нескольких постах.
Побудило меня вернуться сразу несколько вещей. Во-первых выяснилось, что многие вещи из написанных еще не потеряли актуальности. Во-вторых выясниось, что людям нравилось его читать. Было очень приятно:) Пример: три месяца назад на собеседовании меня спрашивали, почему я забросил свой блог, хвалили. Сказали, если возьмут, то буду для их стенгазеты писать. Не взяли, так что писать для стен.газеты не буду:)

Но это все лирика, передем к делу.
Встала задача настроить бэкап на Яндекс.Диск. Само-собой, скриптов множество, но большинство предлагают простое копирование файла без проверок факта копирования, без отчетов и прочего. В конце концов, один хороший человек сбросил мне ссылку на блог некоего товарища с ником del, который решил данную проблему. Учитывая его прозвище, скрипт я прочел, затем проверил в тесте. Всё отлично работает, все файлы на месте, ничего на сторону не отправляется.
Предупреждаю, что скрипт по сути не архивирует данные. Т.е. сжатие есть, но оно минимально. Если вам требуется нормально сжимать данные, то курим "tar --help" или "man tar" для FreeBSD. Кстати,очень люблю FreeBSD именно за их man`ы. Точнее, за почти перманентную необходимость их читать. Каждый раз при чтении возникает ощущение, что "вот-вот... сейчас появится убийца..", но вновь разочарование. Ни убийцы, ни смысла в жизни.

Теперь сам скрипт. Учтите, что в корневой директории вашего диска будет создана папка Приложения. Ищите все там. Также, скрипт оставляет все комментарии на русском языке, так что у многих могут возникнуть проблемы с кодировкой. Решений, как водится, два. Либо устанавливаем нужную на сервер, либо переписываем всё в транслит. Можете еще перевести на английский. Последнее лучше всего, т.к. кому охота читать цитаты из Некрономикона или рукописное назначение врача.
Также обратите внимание, что вначале скрипта стоит стандартное #!/bin/bash

Учтите, что FreeBSD не умеет работать с bash, так что требуется заменить это строку на #!/bin/sh , иначе не заведется.

Выкладывать бекапы проектов (сайтов) на Яндекс.Диск может понадобиться по нескольким причинам, например, из-за нехватки места на сервере (хостинге, VDS, VPS) или для повышения безопасности хранения бекапов (на случай, если сервер без рейда и он выйдет из строя).

В связи с этим я написал для себя и решил выложить для других небольшой bash-скрипт для бекапа на Яндекс.Диск. Функции скрипта:
— Создание на сервере бекапа проектов (файлов + баз данных MySQL);
— Авторизация на Яндекс.Диске в качестве приложения (по токену, более безопасный способ, чем использование логина и пароля);
— Отправка бекапов с сервера на Яндекс.Диск;
— Удаление старых бекапов с Яндекс.Диска для экономии места (настраивается максимальное количество хранимых бекапов);
— Запись и отправка лога на e-mail (настраивается).

Для того, чтобы воспользоваться скриптом, необходимо сначала получить токен от Яндекс.Диска. Приступим.

1. Логинимся на Яндексе под аккаунтом, на диск которого будем делать бекап, заходим на oauth.yandex.ru и нажимаем «Зарегистрировать новое приложение».

2. Заполняем название приложения (например, «backup») и выдаём нужные права в разделе «Яндекс.Диск REST API», а именно: «Доступ к информации о Диске» и «Доступ к папке приложения на Диске».

Ниже на той же странице под полем «Callback URL» нажимаем «подставить URL для разработки» и нажимаем «Сохранить»:

3. После сохранения параметров приложения нас перенаправят на страницу с данными о приложении:

4. Теперь получим сам токен (если хотите, можете почитать подробнее об этом в мануале Яндекса), для этого копируем ID, подставляем в конец URL https://oauth.yandex.ru/authorize?response_type=token&client_id= , переходим по получившемуся адресу и подтверждаем выдачу разрешений приложению:

В итоге на странице будет отображён токен, который выдается не менее, чем на 1 год, поэтому если скрипт бекапа вдруг перестанет работать, мы сможем получить новый токет и подставить его в скрипт. Протестировать возможности работы с Яндекс.Диском, используя полученный токен, можно на специальном полигоне .

А теперь сам bash-скрипт для бекапа на Яндекс.Диск:


#!/bin/bash # # Yandex.Disk backup script v1.0 by Sergey Lukonin (neblog.info) # # # # # # # # # # # НАСТРОЙКИ БЕКАПА MYSQL # # # # # # # # # # # Сервер БД MYSQL_SERVER=mysql.some-server.ru # Юзер, под которым будем делать бекап доступных баз, руту mysql обычно доступны все БД, отдельному пользователю обычно доступна БД конкретного проекта MYSQL_USER=some-user # Пароль пользователя базы данных (Пароль от рута сервера и от рута mysql разные не путайте) MYSQL_PASSWORD=some-password # # # # # # # # # # ОБЩИЕ НАСТРОЙКИ # # # # # # # # # # # Директория для временного хранения бекапов, которые удаляются после отправки на Яндекс.Диск BACKUP_DIR="/home/www/backup" # Название проекта, используется в логах и именах архивов PROJECT="neblog.info" # Максимальное количество хранимых на Яндекс.Диске бекапов (0 - хранить все бекапы): MAX_BACKUPS="14" # Дата, используется в именах архивов DATE=`date "+%Y-%m-%d"` # Директории для архивации (указываются через пробел), которые будут помещены в единый архив и отправлены на Яндекс.Диск DIRS="/home/www/projects/neblog" # Yandex.Disk токен (как получить - см. на neblog.info) TOKEN="" # Имя лог-файла, хранится в директории, указанной в $BACKUP_DIR LOGFILE="backup.log" # E-mail для отправки результата выполнения скрипта. Оставьте пустым, если отправлять результаты не требуется. sendLog="[email protected]" # Отправлять только ошибки (true). Укажите false, если нужно отправлять логи при любом результате выполнения скрипта. sendLogErrorsOnly="false" # # # # # # # # # # КОНЕЦ НАСТРОЕК # # # # # # # # # # # # # # # # # # # # # ДАЛЬШЕ НИЧЕГО НЕ МЕНЯЕМ! # # # # # # # # # # function mailing() { if [ ! $sendLog = "" ];then if [ "$sendLogErrorsOnly" == true ]; then if echo "$1" | grep -q "error" then echo "$2" | mail -s "$1" $sendLog > /dev/null fi else echo "$2" | mail -s "$1" $sendLog > /dev/null fi fi } function logger() { echo "["`date "+%Y-%m-%d %H:%M:%S"`"] File $BACKUP_DIR: $1" >> $BACKUP_DIR/$LOGFILE } function parseJson() { local output regex="(\"$1\":[\"]?)([^\",\}]+)([\"]?)" [[ $2 =~ $regex ]] && output=${BASH_REMATCH} echo $output } function checkError() { echo $(parseJson "error" "$1") } function getUploadUrl() { json_out=`curl -s -H "Authorization: OAuth $TOKEN" https://cloud-api.yandex.net:443/v1/disk/resources/upload/?path=app:/$backupName&overwrite=true` json_error=$(checkError "$json_out") if [[ $json_error != "" ]]; then logger "$PROJECT - Yandex.Disk error: $json_error" mailing "$PROJECT - Yandex.Disk backup error" "ERROR copy file $FILENAME. Yandex.Disk error: $json_error" echo "" else output=$(parseJson "href" $json_out) echo $output fi } function uploadFile { local json_out local uploadUrl local json_error uploadUrl=$(getUploadUrl) if [[ $uploadUrl != "" ]]; then echo $UploadUrl json_out=`curl -s -T $1 -H "Authorization: OAuth $TOKEN" $uploadUrl` json_error=$(checkError "$json_out") if [[ $json_error != "" ]]; then logger "$PROJECT - Yandex.Disk error: $json_error" mailing "$PROJECT - Yandex.Disk backup error" "ERROR copy file $FILENAME. Yandex.Disk error: $json_error" else logger "$PROJECT - Copying file to Yandex.Disk success" mailing "$PROJECT - Yandex.Disk backup success" "SUCCESS copy file $FILENAME" fi else echo "Some errors occured. Check log file for detail" fi } function backups_list() { # Ищем в директории приложения все файлы бекапов и выводим их названия: curl -s -H "Authorization: OAuth $TOKEN" "https://cloud-api.yandex.net:443/v1/disk/resources?path=app:/&sort=created&limit=100" | tr "{}," "\n" | grep "name[[:graph:]]*.tar.gz" | cut -d: -f 2 | tr -d """ } function backups_count() { local bkps=$(backups_list | wc -l) # Если мы бекапим и файлы, и БД, то на 1 бекап у нас приходится 2 файла. Поэтому количество бекапов = количество файлов / 2: expr $bkps / 2 } function remove_old_backups() { bkps=$(backups_count) old_bkps=$((bkps - MAX_BACKUPS)) if [ "$old_bkps" -gt "0" ];then logger "Удаляем старые бекапы с Яндекс.Диска" # Цикл удаления старых бекапов: # Выполняем удаление первого в списке файла 2*old_bkps раз for i in `eval echo {1..$((old_bkps * 2))}`; do curl -X DELETE -s -H "Authorization: OAuth $TOKEN" "https://cloud-api.yandex.net:443/v1/disk/resources?path=app:/$(backups_list | awk "(NR == 1)")&permanently=true" done fi } logger "--- $PROJECT START BACKUP $DATE ---" logger "Выгружаем дампы баз" mkdir $BACKUP_DIR/$DATE for i in `mysql -h $MYSQL_SERVER -u $MYSQL_USER -p$MYSQL_PASSWORD -e"show databases;" | grep -v information_schema | grep -v Database`; do mysqldump -h $MYSQL_SERVER -u $MYSQL_USER -p$MYSQL_PASSWORD $i > $BACKUP_DIR/$DATE/$i.sql; done logger "Создаем архив mysql $BACKUP_DIR/$DATE-mysql-$PROJECT.tar.gz" tar -czf $BACKUP_DIR/$DATE-mysql-$PROJECT.tar.gz $BACKUP_DIR/$DATE rm -rf $BACKUP_DIR/$DATE logger "Создаем архив каталогов $BACKUP_DIR/$DATE-files-$PROJECT.tar.gz" tar -czf $BACKUP_DIR/$DATE-files-$PROJECT.tar.gz $DIRS FILENAME=$DATE-mysql-$PROJECT.tar.gz logger "Выгружаем на Яндекс.Диск архив mysql $BACKUP_DIR/$DATE-mysql-$PROJECT.tar.gz" backupName=$DATE-mysql-$PROJECT.tar.gz uploadFile $BACKUP_DIR/$DATE-mysql-$PROJECT.tar.gz FILENAME=$DATE-files-$PROJECT.tar.gz logger "Выгружаем на Яндекс.Диск архив с файлами $BACKUP_DIR/$DATE-files-$PROJECT.tar.gz" backupName=$DATE-files-$PROJECT.tar.gz uploadFile $BACKUP_DIR/$DATE-files-$PROJECT.tar.gz logger "Удаляем архивы с диска" find $BACKUP_DIR -type f -name "*.gz" -exec rm "{}" \; # Удаляем старые бекапы с Яндекс.Диска (если MAX_BACKUPS > 0) if [ $MAX_BACKUPS -gt 0 ];then remove_old_backups; fi logger "Завершение скрипта бекапа"

Также вы можете скачать готовый файл скрипта . Скрипт следует расположить на сервере, заменить в нём параметры на свои, дать права на запуск (chmod +x) и поставить на ежедневное выполнение в cron. Если вы планируете выполнять несколько таких заданий, задайте время между их запуском (5-10 минут).



Понравилась статья? Поделиться с друзьями: