Встала задача сохранять бэкапы мускула в 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 может отличаться.
Желательно сразу протестировать работу крон задания, т.к. возможно придётся вносить правки и использовать абсолютные пути.
Источник http://devpad.ru/pos...ve-dropbox.html