Posted at

Ubuntu 14.04 LTSでDropboxのcli&同期環境をつくる

More than 3 years have passed since last update.

近しい手順はいくつかあったのですが、そのものドンピシャがなかったのでまとめます。

今回のやりたかったことは以下の通り。


  • サーバ環境(X Windowなし)

  • OS起動時に自動起動したい

  • そして勝手に同期を初めてもらいたい

Dropboxの公式手順がユーザ権限で動かせるcli導入手順なので、どうしてもその派生手順が多い。

とはいえ今回はサーバなのでパッケージ以外は利用したくない。

というわけで、以下が手順です。


nautilus-dropboxのインストール

面倒なのでパッケージを利用させて頂く。

$ sudo apt-get install nautilus-dropbox


dropboxの初期設定

まずは手動で動作する環境を。

というわけで、対象ユーザ(後のowner)でdropboxを起動して設定します。動かすときは 一般ユーザ権限 なので注意!(rootで起動しちゃうと各種ファイルがrootで作られるので後にパーミッションを修正する必要あり)


config-dropbox

$ dropbox start -i

Starting Dropbox...Done!

# しばらく待つ...

$ dropbox start -i
To link this computer to a dropbox account, visit the following url:
https://www.dropbox.com/cli_link?host_id=xxxxxxxxxxxxxxxx


表示されたURLをブラウザで叩いて認証を通ると認可されます。

これで無事クライアント設定がされ、対象ユーザのホームディレクトリにDropboxディレクトリが出来ます。


dropboxの自動起動設定

今回の山場です。以下のようなスクリプトを作成します。


/etc/init.d/dropbox

#!/bin/sh

#dropbox service
DROPBOX_USERS="user1 user2"

DAEMON=/usr/bin/dropbox

start() {
echo "Starting dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
HOME="$HOMEDIR" start-stop-daemon -o -c $dbuser -S -u $dbuser -x $DAEMON -- start
done
}

stop() {
echo "Stopping dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
start-stop-daemon -o -c $dbuser -K -u $dbuser -x $DAEMON -- stop
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


パッケージのバイナリを使う関係で、オリジナルのものからは若干変えていまして、以下が変更点です。


  • daemon化対象を/usr/bin/dropboxに(先ほどの設定時に叩いたコマンド)

  • 参照が/usr/binなので存在チェックを外す

  • 操作モード(start, stop)に関する引数を追加

  • こいつ自身がやってくれる模様なので、バックグラウンド化を外した

あとはこれを自動実行に入れます。

$ sudo chmod 755 /etc/init.d/dropbox

$ sudo update-rc.d dropbox default 99

で、再起動して一般ユーザownerのdropboxプロセスが起動していれば無事完了。


参考

スクリプトのベースはここから拝借しました

http://www.dropboxwiki.com/tips-and-tricks/install-dropbox-in-an-entirely-text-based-linux-environment#Running_on_system_startup