Создание бекапов в Яндекс.Диск (Ubuntu)
Скрипт умеет:
— Делать бекапы директорий, например, /etc.
— Делать бекапы поддиректорий (разделяя их), например, /var/www/*.
— Делать дампы MySQL.
— Делать дампы PostgreSQL.
— Загружать все это дело в Яндекс.Диск.
Подготовка
Для начала необходимо получить токен для Яндекс.Диска.
Для этого:
1. Перейдите по этому URL https://oauth.yandex.ru/client/new.
2. Название введите любое, например, “server_backup” без кавычек.
3. Права выберите пункт “Яндекс.Диск REST API” и в нем “Доступ к папке приложения на Диске”.
4. Снизу нажмите “Подставить URL для разработки”.
5. Сохраните.
Вам выдаст подобные результаты:
ID: 61bf56f1e72a4112b83e1db9e44dbe9c Пароль: 74087cd13d2247c48661c75617916b75 Callback URL: https://oauth.yandex.ru/verification_code
- Переходим по URL https://oauth.yandex.ru/authorize?response_type=token&display=popup&client_id=%ID%
Обратите внимание. Замените в URL выше %ID% на то, что получили выше, т.е. в моем примере — “61bf56f1e72a4112b83e1db9e44dbe9c”. - Нажимаем кнопку “Разрешить”.
- Копируем полученный токен и вставляем его в скрипт в YD_TOKEN (см. ниже).
Настройка
Скачайте файл backup_yd.sh и сохраните его на сервере.
Далее, вам необходимо изменить переменные в блоке “Init variables”:
# Базовый путь для сохранения бекапов. BASE_BACKUP_DIR="/home/user/backups" # Токен Yandex.Disk. YD_TOKEN="" # Пароль от пользователя root СУБД MySQL. Если она не используется, оставьте пустым. MYSQL_ROOT_PASSWORD="" # Делать дампы СУБД PostgreSQL? # Пустая строка - нет # "1" - да USE_POSTGRESQL="" # Список директорий, которые необходимо бекапить. # В данном примере будет забекаплена директория /etc как архив etc.tar.gz и # все поддиректории /var/www с соответствующими именами. declare -a DIRS_FOR_BACKUP=('/etc' '/var/www/*'); # Размеры чанков (т.к. максимальный размер файлов ограничен, то необходимо # разрезать архив на несколько частей. Чанк - и есть эта часть). SPLIT_BY="200MiB"
Также, необходимо дать права на запуск:
Проверяем
Для проверки запустим скрипт:
В директории %BASE_BACKUP_DIR% будет создана директория с текущей датой, в ней поддиректории для файлов и дампов баз данных.
Все файлы бекапов разрезаются на чанки.
Затем будет произведена загрузка на Яндекс.Диск и директория будет удалена.
Примечание: Чтобы собрать бекап из чанков, используйте команду cat:
cat mybackup.tgz_* > mybackup.tgz
Настраиваем ежедневные бекапы по времени
Добавляем следующую строку (впишите правильный путь до файла backup_yd.sh)
0 3 * * * /bin/bash /home/user/backups/backup_yd.sh
После этого сохраняйте и выходите из редактирования cron.
Все, теперь каждый день в 3 часа ночи будет создаваться новый бекап и загружаться в ваш Яндекс.Диск.
Резервное копирование сервера Debian/Ubuntu на Яндекс Диск
Данный материал проверялся на сервере Идеальный сервер — Ubuntu 12.04 LTS [ISPConfig 3], с предустановленной панелью Установка Webmin. Зарегистрировав себе Яндекс Диск по ссылке на картинке в отличии от стандартной регистрации вы получаете +1 ГБайт к вашему диску, ну а я +0,5ГБайт за каждого приведенного. Я не стараюсь лишний раз «пропиарить» и без того замечательный сервис Яндекс которым пользуюсь с начала его запуска, так как этот сервис стоит того чтобы каждый из нас мог пользоваться в целях безопасности наших сайтов и скорости его работы, удобства пользования и по настоящему бесплатного и надежного ресурса!
Все шаги выполняются от лица суперпользователя/root, так как по соображениям безопасности по умолчанию отключают этого пользователя, нам необходимо назначить основного пользователя системы администратором/root, для этого выполним в командной строке команду:
Так как сервис Яндекс Диск поддерживает работу через WebDAV, нам понадобится программа davfs2. Ввиду того, что утилита «davfs2» из одноименного пакета не входит в базовую комплектацию ОС «Ubuntu», следует провести предварительную установку данного пакета.
Выполнить это можно, командой:
По завершении установки следует выполнить переконфигурирование пакета:
Мы должны увидеть окно со следующим текстом:
Чтобы разрешить монтирование ресурсов WebDAV непривилегированным (не имеющих суперпользовательских прав root) пользователям на файл /sbin/mount.davfs должен быть установлен SUID бит. Если вы откажитесь, то только пользователь root сможет монтировать ресурсы WebDAV. Данную настройку можно изменить позже запустив команду ‘dpkg-reconfigure davfs2’.
Разрешить монтирование ресурсов WebDAV непривилегированным пользователям?
выбрав пункт «Да», для разрешения монтирования облачных хранилищ непривилегированным пользователям ОС. Заместо этого можно просто выполнить команду
Также, для удобного монтирования, без необходимости ввода пароля корневого пользователя (root), необходимо добавить пользователя в группу «davfs2». Например, если планируется добавить данного пользователя, следует выполнить команду.
Создание точки монтирования
Монтирование возможно только в существующую папку, создать которую можно, например, командой
вторая команда применяется если для создания папки требуются административные привилегии.
- $PathToMountPoint следует заменить допустимым именем в пользователя Ubuntu. Например, $PathToMountPoint может принимать следующие значения
- $HOME/CloudDisk – точка монтирования размещена в домашней папке пользователя и под-папке CloudDisk .
- /media/CloudDisk – точка монтирования размещена в системной папке /media и под-папке CloudDisk./ Для создания требуются административные привилегии. Рекомендуется создавать точку монтирования в папке /media , потому что при этом облачное хранилище будет доступно к монтированию\размонтированию через Nautilus.
Во избежание конфликтов, такую папку (естественно с другим именем) следует создавать для каждого удаленного облачного диска, который планируется использовать.
В своем примере я использую команду:
Настройка учетных данных
Для того, что бы не было необходимости вводить пароль при каждом монтировании, следует сообщить имя пользователя удаленного облачного диска и его пароль утилите davfs2 . Для этого необходимо редактировать файл /etc/davfs2/secrets .
Этот файл содержит секретную информацию (пароль пользователя для доступа к удаленному облачному диску), следует позаботится о их сохранности и защищенности
Файл /etc/davfs2/secrets является системным, доступ на чтение к нему имеет только корневой пользователь root , поэтому хранение пароля в нём более безопасно.
Далее рассматривается указание аутентификационной информации пользователя облачного диска в файле /etc/davfs2/secrets .
Открыв этот файл для редактирования, например, командой
В моем случае это команда выглядит так:
(не забудьте сменить login и password на свой логин и пароль учетной записи Яндекс соответственно)
Ввиду наличия секретной информации в этом файле, обязательно следует запретить другим пользователям системы производить его чтение, например, командой
Настройка монтирования fstab
Сопоставление адреса облачного диска и точки его монтирования производится за счет информации в файле /etc/fstab (см. fstab, fstab). В этот файл следует внести информацию о параметрах монтирования для каждого облачного диска. Для редактирования этого файла можно выполнить команду (требуются административные привилегии)
Внимание! Если Вам необходимо автоматическое монтирование при запуске системы, заменяем noauto на auto.
Так как мы используем сервис Яндекс Диск наша строка будет иметь вид:
не забудьте сменить путь к вашего монтируемого каталога /backup/yadisk если он отличается в Вашем случае.
Проверка монтирования
После завершения данных манипуляций целесообразно проверить монтирование, выполнив команду mount
- $PathToMountPoint точка монтирования облачного диска описанная в /etc/fstab .
- Или равнозначной командой:
Отмонтировать такой диск можно командой umount
Далее необходимо настроить резервное копирование используя Webmin, о том как это сделать уже описано в статье резервное копирование Ubuntu в Webmin. Так же не забудьте, что в Webmin можно выполнить резервное копирование баз данных Службы — Сервер баз данных MySQL — Backup Databases более подробно об этом в материале Резервное копирование сайтов в Webmin.
Обмениваться, хранить, передавать Ваши файлы стало просто как никогда.
Читать подробнее: для чего Yandex-Диск проекту Mini-Server. Практика установки, настройки и использования сетевого хранилища на Ubuntu server LTS 12.04 в статье Резервное копирование сервера Ubuntu на Яндекс Диск.
>> | Ubuntu 12.04 + Nginx | |
>> | Fedora 15 | |
>> | Простой Debian 6.0.6 | |
>> | CentOS 6.0 и + (5.6) другой | |
>> | OpenSUSE 11.4 MAX |
Резервное копирование с CentOS сервера на Яндекс.Диск
В данной статье я приведу пример организации простейшего резервного копирования сайтов и баз данных MySQL с сервера CentOS 6.x на Яндекс.Диск.
Прежде всего установим yandex-disk на сервер, для этого воспользуемся утилитой yum и инструкцией от Яндекса:
# nano /etc/yum.repos.d/yandex.repo
[yandex] name=Yandex failovermethod=priority baseurl=http://repo.yandex.ru/yandex-disk/rpm/stable/$basearch/ enabled=1 metadata_expire=1d gpgcheck=1 gpgkey=http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG
# rpm --import http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG # yum install yandex-disk
В качестве директории для синхронизации, я оставил дефолтную (/home/user/Yandex.Disk) Создадим в ней директорию для бэкапа:
$ cd /home/user/Yandex.Disk$ mkdir backup
Нелишним будет в файле конфигурации Яндекс.Диска отключить директории отличные от backup, если вы планируете пользоваться им не только для создания резервных копий. Делается это просто, добавлением строки в файл config.cfg:
exclude-dirs="exclude/dir1,exclude/dir2,path/to/another/exclude/dir"
CURDATE=`date +%F` OLDDATE=`date +%F --date='7 day ago'` mysqldump -u mysqluser -ppassword --all-databases > /home/user/mysql-$CURDATE.sql gzip /home/user/mysql-$CURDATE.sql mv /home/user/mysql-$CURDATE.sql.gz /home/user/Yandex.Disk/backup rm /home/user/Yandex.Disk/backup/mysql-$OLDDATE.sql.gz tar czf /home/user/Yandex.Disk/backup/sites-$CURDATE.tar.gz /var/www/sites rm /home/user/Yandex.Disk/backup/sites-$OLDDATE.tar.gz
В этом скрипте переменной CURDATE присваивается текущая дата, переменной OLDDATE дата недельной давности. Создаётся дамп базы данных, сжимается gzip’ом, и переносится в директорию Яндекс.Диска, туда же создается сжатая tar+gzip’ом копия директории с сайтами (в данном примере это /var/www/sites). Скрипт настроен таким образом, что удаляет бекапы старее 6 дней. Далее нужно запустить синхронизацию с Яндекс.Диском:
Убедитесь в наличии прав на запуск файла backup.sh Как только резервная копия будет создана, демон Яндекс.Диска начнёт синхронизировать копию с облаком. Если всё прошло нормально, добавим выполнение скрипта backup.sh в планировщик cron:
3 5 * * * bash /home/user/backup-new.sh
При такой конфигурации скрипт будет запускаться каждый день в 5 часов 3 минуты утра. Можно скорректировать время, исходя из дневной нагрузки на сервер, выбирая промежуток времени с наименьшей нагрузкой.
Отзывы — 2
Пара вопросов:
1. Удаляется ли архив после успешной передачи на Я.Диск?
2. Если не удаляется, то при удалении на сервере удалится ли он на Я.Диск?
3. есть ли возможность указать сколько бекапов хранить на Я.Диск?
1. Архив не удаляется;
2. Тут зависит от настроек, но по умолчанию удалится;
3. Конечно, нужны детали?
Написать комментарий
Если, вы не зарегистрированы, то пройдите регистрацию.