Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 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

YamaguchiRei
技術領域はインフラ寄りだが開発もこなすオールラウンダー。発言はすべて個人的なものです。Python/Ruby/Java/PHP/JavaScript/Icinga/MongoDB/Vyattaとか色々
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away