Многие пользуются сервисом Dropbox для синхронизации данных между своими компьютерами. Между тем немногие знают, что сервисом можно пользоваться и без GUI (графической оболочки). В этой статье пойдет речь о том как установить Dropbox и для чего он нужен на сервере. Естественно, статья касается Ubuntu Server.
Зачем нужен Dropbox на сервере? Применений много... Одно из них - удобная заливка файлов на сервер. Гораздо удобней положить нужный файл в папку Dropbox, чем подключаться к серверу по какому-то протоколу. А второе применение, которое я использую – это резервные копии. Суть в следующем: периодически (каждый день) некий скрипт делает резервную копию важных данных на сервере и помещает ее в папку, которая синхронизируется через Dropbox. Согласитесь, это и удобно, и быстро. Допустим, ваш сервер – это web-сервер, на котором крутятся ваши сайты, и этот сервер вы арендуете не то что в другой стране, а на другом континенте, то есть физически к нему доступ для вас затруднен. Каждое утро получать резервную копию с этого сервера в свою папку на своем жестком диске безо всяких дополнительных телодвижений – просто сказка.
Но хватит лирики, перейдем непосредственно к установке. На моем сервере используется Ubuntu Server 12.04 LTS.
Установка Dropbox на Ubuntu Server
Заходим в консоль своего сервера и переходим в домашнюю папку. Скачиваем нужный нам архив (32-битный или 64-битный). Проверить какой именно архив нужен Вам можно по:
uname -m
Если i686 то:
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86"
Если x86_64 то:
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86_64"
Распаковываем архив:
tar -xvzf dropbox.tar.gz
Запускаем dropboxd
~/.dropbox-dist/dropboxd
Нам будет показана информация о дальнейших шагах установки Dropbox:
This client is not linked to any account...
Please visit https://www.dropbox.com/cli_link?host_id=0501f86e946e3ff8232ecf027bb4239a&cl=en_US to link this machine.
Вам нужно пройти по предложенной ссылке, зарегистрироваться в Dropbox и добавить свой сервер в список присоединенных компьютеров (устройств).
После чего (не больше минуты) в консоли мы увидим следующее:
Client successfully linked, Welcome Roman!
Собственно в домашней папке создалась папка Dropbox и даже началась синхронизация. Однако прервем ее, чтобы настроить Dropbox как сервис. Чтобы остановить синхронизацию нажмите комбинацию CtrlC
Настройка Dropbox как сервиса
Для этого создаем файл /etc/init.d/dropbox
sudo nano /etc/init.d/dropbox
со следующим содержимым:
#!/bin/sh
# dropbox service
# Replace with linux users you want to run Dropbox clients for
DROPBOX_USERS="user1 user2"
DAEMON=.dropbox-dist/dropbox
start() {
echo "Starting dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $HOMEDIR/$DAEMON ]; then
HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}
stop() {
echo "Stopping dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $HOMEDIR/$DAEMON ]; then
start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}
status() {
for dbuser in $DROPBOX_USERS; do
dbpid=`pgrep -u $dbuser dropbox`
if [ -z $dbpid ] ; then
echo "dropboxd for USER $dbuser: not running."
else
echo "dropboxd for USER $dbuser: running (pid $dbpid)"
fi
done
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
stop
start
;;
status)
status
;;
*)
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
exit 1
esac
exit 0
Обратите внимание на третью строчку. Вместо “user1 user2” подставьте свои логины на сервере(!!!НЕ ЛОГИН DROPBOX А ПОЛЬЗОВАТЕЛЯ СЕРВЕРА НУ ИЛИ ROOT ЕСЛИ ВЫ ПОД НИМ СТАВИТЕ). Как вы уже поняли, сервис можно запустить для многих пользователей, а не для одного. При этом каждому пользователю придется скачать пакет, распаковать его и привязать к своему аккаунту (все это было описано выше).
Даем скрипту права на выполнение и добавляем его в автозапуск следующими двумя командами:
sudo chmod +x /etc/init.d/dropbox
sudo update-rc.d dropbox defaults
Теперь вы можете управлять на сервере сервисом Dropbox командами:
sudo service dropbox start
sudo service dropbox stop
sudo service dropbox restart
sudo service dropbox status
Проверка статуса при помощи Dropbox CLI
Скрипт на пайтоне позволяет управлять работой dropbox и данными. Качаем и ложим в любое удобное место, я кладу к остальным файлам dropbox-а:
wget -O ~/.dropbox/dropbox.py "http://www.dropbox.com/download?dl=packages/dropbox.py"
chmod 755 ~/.dropbox/dropbox.py
Проверка статуса:
~/.dropbox/dropbox.py status
Downloading 125 files (303.9 KB/sec, 1 hr left)
Полный список команд CLI:
~/.dropbox/dropbox.py help
Note: use dropbox help to view usage for a specific command.
status get current status of the dropboxd
help provide help
puburl get public url of a file in your dropbox
stop stop dropboxd
running return whether dropbox is running
start start dropboxd
filestatus get current sync status of one or more files
ls list directory contents with current sync status
autostart automatically start dropbox at login
exclude ignores/excludes a directory from syncing
Selective Sync (Избирательная синхронизация)
По умолчанию все папки синхронизируются и для того чтобы исключить лишнее:
~/.dropbox/dropbox.py help exclude
dropbox exclude [list]
dropbox exclude add [DIRECTORY] [DIRECTORY] ...
dropbox exclude remove [DIRECTORY] [DIRECTORY] ...
"list" prints a list of directories currently excluded from syncing.
"add" adds one or more directories to the exclusion list, then resynchronizes Dropbox.
"remove" removes one or more directories from the exclusion list, then resynchronizes Dropbox.
With no arguments, executes "list".
Any specified path must be within Dropbox.
В качестве примера исключим папку test из числа синхронизируемых:
~/.dropbox/dropbox.py exclude add ~/Dropbox/test
Исключим конкретный файл test.txt:
~/.dropbox/dropbox.py exclude add ~/Dropbox/test.txt
Убрать исключение можно так:
~/.dropbox/dropbox.py exclude remove ~/Dropbox/test
Полный список исключенных файлов и папок можно посмотреть так:
~/.dropbox/dropbox.py exclude list
Собственно на этом установка и завершена.
Материал собирательный и взят тут, тут и тут. Полностью проверен на работоспособность в Ubuntu 12.04 LTS Server
С удовольствием отвечу на ваши вопросы и комментарии.