Бэкап сайта DROPBOX
Нашел на GitHub хороший BASH скрипт Dropbox-Uploader, который позволяет загружать, удалять, отображать файлы на вашем Dropbox аккаунте, работает он через API Dropbox.
Документацию можно прочесть на GitHub, она проста и понятна. Скрипт состоит из двух файлов:
dropbox_uploader.sh
– основной скрипт с которым и идет все взаимодействие с Dropbox
dropShell.sh
– интерактивная оболочка для упрошенной работы с Dropbox из терминала, используется только для того чтоб не вводить более сложные команды используя dropbox_uploader.sh при ручной работе с Dropbox, для работы своих скриптов этот файл не нужен, и я его не использую.
Работа с dropbox_uploader.sh для резервного копирования в Dropbox
После скачивания dropbox_uploader.sh, я решил сделать этот скрипт видимым глобально из системы, для более удобной работы.
В Ubuntu это делается так
sudo mv dropbox_uploader.sh /usr/local/bin/dropUpload
sudo chmod +x /usr/local/bin/dropUpload
Это команды переносят скрипт dropbox_uploader.sh в глобально видимую папку со скриптами при этом переименовав скрипт в dropUpload. И делают его доступным для выполнения.
После чего нужно ввести команду dropUpload, и откроется диалог в котором вас попросят перейти по ссылке, зарегистрировать приложение в Dropbox. При регистрации приложения в Dropbox предлагается выбрать уровень доступа приложения к вашим файлам на аккаунте. Можно сделать глобальный доступ, тогда приложению будет доступны все файлы и папки на вашем Dropbox аккаунте, либо ограниченный доступ, при котором создаться специальная папка для приложения и приложение будет иметь доступ только к ней. Второй вариант безопаснее, и я использую его.
После этого вам будут выданы App Key и App Secret, которые нужно требует наш скрипт. После ввода этих данных скрипт создает файлик ~/.dropbox_uploader, в котором хранятся эти настройки, и его можно переносить с сервера на сервер, без необходимости вручную вводить эти данные на каждом сервере.
Все, скрипт работы с Drobox настроен, и уже можно экспериментировать отправкой файлов на Dropbox.
Скрипт резервного копирования
Для того чтоб автоматически делать бэкап базы данных и файлов нужно еще сделать индивидуальный скрипт для каждого сайта, вот моя заготовка:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PROJNAME="example.com"
DBNAME="example_com"
HOST='localhost'
USER='your_username'
PASSWD='your_password'
DATADIR=/var/www/user/data/backupper/$PROJNAME
SRCFILES='/var/www/user/www/example.com/www'
ZIPPARAMS=""
#start backup
echo "[--------------------------------[`date +%F_%H-%M`]--------------------------------]"
echo "[----------][`date +%F_%H-%M`] Run the backup script..."
mkdir -p $DATADIR 2> /dev/null
find $DATADIR -mtime +10 -type f -print -delete
echo "[++--------][`date +%F_%H-%M`] Generate a database backup..."
#MySQL dump
MYSQLFILENAME=`date +%F_%H-%M`-$DBNAME.sql
mysqldump --user=$USER --host=$HOST --password=$PASSWD $DBNAME > $DATADIR/$MYSQLFILENAME
dropUpload upload $DATADIR/$MYSQLFILENAME $PROJNAME/$MYSQLFILENAME
rm $DATADIR/$MYSQLFILENAME
echo "[++++------][`date +%F--%H-%M`] Backup database [$DBNAME] - successfull."
echo "[++++++----][`date +%F--%H-%M`] Copy the source code project [$PROJNAME]..."
#Src dump
FILESFILENAME=`date +%F_%H-%M`-$PROJNAME.zip
zip -r $ZIPPARAMS $DATADIR/$FILESFILENAME $SRCFILES 2> /dev/null
dropUpload upload $DATADIR/$FILESFILENAME $PROJNAME/$FILESFILENAME
rm $DATADIR/$FILESFILENAME
echo "[++++++++--][`date +%F--%H-%M`] Copy the source code project [$PROJNAME] successfull."
echo "[+++++++++-][`date +%F--%H-%M`] Stat datadir space (USED): `du -h $DATADIR | tail -n1`"
echo "[+++++++++-][`date +%F--%H-%M`] Free HDD space: `df -h /home|tail -n1|awk '{print $4}'`"
echo "[++++++++++][`date +%F--%H-%M`] All operations completed successfully!"
exit 0
Поясню по переменным:
PROJNAME – название проекта, так будет назваться папка на Dropbox в которую сохраняются файлы
DBNAME – база данных
HOST – хост базы данных, обычно это localhost
USER – имя пользователя базы данных
PASSWD – пароль базы данных
DATADIR – папка в которую будут сохранятся резервные копии до того как отправятся на Drobbox, потом файлы из папки удалаются
SRCFILES – папка в которой находятся файлы проекта
ZIPPARAMS – параметры для ZIP архивирования, для некоторых проектов я указываю параметры которые исключают некоторые файлы и папки из резервной копии.
Сам скрипт писал не я, просто нашел кусок какого-то кода и переделал под себя.
Предварительно на сервере должен быть установлен ZIP архиватор, но можно поправить скрипт и пользоваться предустановленным tar архиватором.
Теги: backup, dropbox