Бэкап MySQL баз данных с сохранением в DropBox
Описание
Встала задача сохранять бэкапы мускула в DropBox'e.
Сказано – сделано!
Быстрым гуглением нашёл shell скрипт, позволяющий загружать(и другие операции, в том числе удалять) файлы на DropBox.
Ссылка на проект с гитхаба - https://github.com/a...ropbox-Uploader
Скачиваем проект и заливаем на сервер.
Я выбрал папку /home/cron/ для содержимого bash скриптов.
Предварительно создаём эту папку.
mkdir /home/cron/ wget https://github.com/andreafabrizi/Dropbox-Uploader/archive/master.zip --output-document=/home/cron/master.zip
Разархивируем архив и перенесём нужный нам файл dropbox_uploader.sh в нашу папку /home/cron/.
cd /home/cron unzip master.zip mv Dropbox-Uploader-master/dropbox_uploader.sh dropbox_uploader.sh rm master.zip rm -rf Dropbox-Uploader-master
Далее даём права на исполнение
chmod +x dropbox_uploader.sh
И запускаем скрипт
./dropbox_uploader.sh
В ответ получаем:
This is the first time you run this script. Please open this URL from your Browser, and access using your account: -> href="https://www2.dropbox.com/developers/appsIf you haven't already done, click "Create an App" and fill in the form with the following data: App name: MyUploader285109611 Description: What do you want... Access level: App folder or Full DropboxNow, click on the "Create" button. When your new App is successfully created, please type the App Key, App Secret and the Access level: # App key:
Далее согласно инструкции открываем адрес https://www2.dropbox...developers/apps в любимом браузере.

И нажимаем создать приложение.

Заполняем данные приложения. Название приложения должно быть уникальным в DropBox'e.
В выборе доступа (Access) можно выбрать только доступ к папке с приложением или доступ ко всем папкам аккаунта.
Нажимаем создать приложение и переходим на страницу с данными для авторизации.

Теперь возвращаемся к нашему терминалу и заполняем данные:
- App key
- App secret
- Отвечаем на вопрос какой доступ (access) есть у приложения (a – только к папке приложения, f – полный доступ к аккаунту)
- Подтверждаем ведённые данные (y – всё верно)
When your new App is successfully created, please type the App Key, App Secret and the Access level: # App key: be54w2ut98459vg # App secret: 6r22w8rgeum7jfi # Access level you have chosen, App folder or Full Dropbox [a/f]: a > App key is be54w2ut98459vg, App secret is 6r22w8rgeum7jfi and Access level is App Folder, it's ok? [y/n]y > Token request... OK Please visit this URL from your Browser, and allow Dropbox Uploader to access your DropBox account: --> https://www2.dropbox.com/1/oauth/authorize?oauth_token=uo5s2mb8knggpup Press enter when done...
После ввода данных происходит получение токена и ссылки по которой нужно активировать доступ приложения к аккаунту.
Переходим по полученной ссылке https://www2.dropbox...uo5s2mb8knggpup

Жмём разрешить (Allow).
Всё, теперь можно пользоваться созданным приложением.
На мыло, при этом приходит письмо.

Переходим в терминал и нажимаем Enter.
> Access Token request... OK Setup completed!
OK. Настройка завершена.
Попробуйте протестировать, например, запросив инфу из аккаунта
# ./dropbox_uploader.sh info Dropbox Uploader v0.11.2 > Getting info... Name: DevPad.RU UID: 147****** Email: email@test.com Quota: 3072 Mb Used: 1198 Mb Free: 1873 Mb
Ура, работает!
Теперь напишем скрипт для бэкапа MySQL баз данных. Я напишу скрипт бэкапа сразу 3 баз данных, чтобы и вы могли использовать его с лёгкостью!
Создадим файл backup.sh и засунем в него такой код
#!/usr/local/bin/bash
DATE=`date "+%Y_%m_%d"` # текущая дата
LOGIN="root" # рутовый логин MySQL
PASSWORD="pass" # пароль к MySQL
DROPBOX_UPLOADER="/home/cron/dropbox_uploader.sh" # путь к скрипту DropBox аплоадера
DROPBOX_PATH="/" # корневая папка в которую сохранять в DropBox'e
SQL_PATH="/home/sql/backup/" # папка, куда сохранять MySQL бэкапы на сервере
MYSQLDUMP="mysqldump" # путь к программе MySQLDump
databases=(bd1 bd2 bd3) # базы данных через пробелfor database in "${databases[@]}"
do
echo "MySQL backup database: ${database}"
$MYSQLDUMP -q -u$LOGIN -p$PASSWORD $database > ${SQL_PATH}${database}_${DATE}.sql
gzip -9 -c ${SQL_PATH}${database}_${DATE}.sql > ${SQL_PATH}${database}_${DATE}.sql.gz
$DROPBOX_UPLOADER upload ${SQL_PATH}${database}_${DATE}.sql.gz ${DROPBOX_PATH}${database}/${DATE}.sql.gz
rm ${SQL_PATH}${database}_${DATE}.sql.gz
done
# удаляем все бэкапы старше 10 дней
find ${SQL_PATH} -type f -mtime +10 -exec rm -f {} \;
# архивируем бэкапы полученные более 1 дня назад
find ${SQL_PATH} -type f -mtime +1 -exec gzip -9 {} \; 2>/dev/null
Обратите внимание, что у вас доступ к bash, описанный в первой строке (#!/usr/local/bin/bash), может отличаться.
Узнать точный адрес можно командой
# which bash /usr/local/bin/bash
Попробуем запустить скрипт.
# /home/cron/backup.sh MySQL backup database: bd1 > Uploading /home/sql/backup/bd1_2012_11_30.sql.gz to /bd1/2012_11_30.sql.gz... ######################################################################## 100.0% > DONE MySQL backup database: bd2 > Uploading /home/sql/backup/bd2_2012_11_30.sql.gz to /bd2/2012_11_30.sql.gz... ######################################################################## 100.0% > DONE MySQL backup database: bd3 > Uploading /home/sql/backup/bd3_2012_11_30.sql.gz to /bd3/2012_11_30.sql.gz... ######################################################################## 100.0% > DONE
Ура! Заработало!
Теперь создадим задание в кроне на бэкап раз в сутки.
# crontab -e 0 03 * * * /usr/local/bin/bash /home/cron/backup.sh
Мы установили создание бэкапа в 3 ночи. Путь к bash может отличаться.
Желательно сразу протестировать работу крон задания, т.к. возможно придётся вносить правки и использовать абсолютные пути.

Рекомендуемые комментарии
Комментариев нет
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти