Бэкап 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 может отличаться.
Желательно сразу протестировать работу крон задания, т.к. возможно придётся вносить правки и использовать абсолютные пути.
Рекомендуемые комментарии
Комментариев нет
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти