No.2679 GUIの無いLinux(CentOS)にDropboxをインストールする
GUIの無いLinux(CentOS)にDropboxをインストールする
--- 2009/12/14 修正 ---
DropboxのページからダウンロードできるLinux版は、X環境がなければセットアップできません。
Dropbox Wikiに投稿されているdbcli.pyでは、CLIからインストールすることができるようなコマンドがありますが、実際にはアカウントの設定のためにXが必要となります。
ここでは、XをインストールしていないCentOSにDropboxをセットアップする手順を紹介します。
手順は以下のページを参考にしています。他のディストリビューションの場合はご覧ください。
TipsAndTricks/TextBasedLinuxInstall - Dropbox Wiki
以下では、CentOS 5.2 (kernel 2.6.18-92.1.6.el5) を前提としています。
Pythonをインストールする。
Dropboxインストールに必要なスクリプトは、Python 2.5以上が必要ですが、CentOSではPython 2.4系までしか用意されていません。
そのため、ここではPython 2.6をインストールします。最新のソースコードはコチラから探してください。
# wget http://www.python.org/ftp/python/2.6.2/Python-2.6.2.tgz # tar xvzf Python-2.6.2.tgz # cd Python-2.6.2 # ./configure --prefix=/usr/local/Python-2.6.2 # make # make install
必要なファイルをダウンロード、バイナリを展開
DropboxのバイナリとCUI用のスクリプトをダウンロードし、展開します。
Xがある場合のバイナリ位置と一致させるため、ホームディレクトリで作業をしましょう。
# cd # wget -O dropbox.tar.gz http://www.getdropbox.com/download?plat=lnx.x86 # tar zxof dropbox.tar.gz # wget http://dl.getdropbox.com/u/6995/dbmakefakelib.py # wget http://dl.getdropbox.com/u/6995/dbreadconfig.py # wget http://www.getdropbox.com/download?dl=packages/dropbox.py
Dropbox動作環境の準備
dbmakefakelib.py を実行することで、Dropbox用の仮GUIライブラリが作成されます。
# /usr/local/Python-2.6.2/bin/python ~/dbmakefakelib.py
CentOS機をDropboxに登録します。
他機のブラウザから以下のURLにアクセスし、既存のアカウントに統合、もしくは新規登録してください。
『https://www.getdropbox.com/register?cli_link= + 下記の出力結果「host_id」』
# /usr/local/Python-2.6.2/bin/python ~/dbreadconfig.py host_id = xxxxxxxxxxxxxxxxxxxxxxxxxxxx last_revision = None schema_version = 6
Dropboxの起動
Dropbox用のディレクトリを作り、起動します。
# mkdir ~/Dropbox # ~/.dropbox-dist/dropboxd &
以下を実行することで、正常動作を確認できます。
# /usr/local/Python-2.6.2/bin/python ~/dropbox.py status Downloading 1820 files (96.6 KB/sec, 22 min left)
Dropboxをデーモンとして登録
以下の起動スクリプトを用意し、Linux起動時に自動起動するように設定します。
# vi /etc/init.d/dropbox
# chkconfig: 345 85 15 # description: Startup script for dropbox daemon # # processname: dropbox # pidfile: /var/run/dropbox.pid # # Source function library. . /etc/rc.d/init.d/functions USER="root" prog=dropbox DROPBOX_BIN="/root/.dropbox-dist/dropboxd" lockfile=${LOCKFILE-/var/lock/subsys/dropbox} RETVAL=0 start() { echo -n $"Starting $prog" #daemon --user $USER $DROPBOX_BIN $DROPBOX_BIN & 2>&1 && ps -ef | egrep " /root/.dropbox-dist/dropbox$" | grep -v grep | awk "{print $2}" > /var/run/$prog.pid RETVAL=$? echo [ $RETVAL = 0 ] && touch ${lockfile} return $RETVAL } stop() { echo -n $"Stopping $prog" killproc /root/.dropbox-dist/dropbox RETVAL=$? echo [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} } status () { /usr/local/Python-2.6.2/bin/python /root/dropbox.py status } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status ;; restart) stop start ;; *) echo $"Usage: $prog {start|stop|restart}" RETVAL=3 esac exit $RETVAL
# chmod +x /etc/init.d/dropbox # chkconfig --add dropbox # chkconfig dropbox on # chkconfig --list | grep dropbox dropbox 0:off 1:off 2:on 3:on 4:on 5:on 6:off
以上で終了です。起動スクリプトはもう少し上手く書けると思いますが。。。
2009/05/08 追記
起動スクリプトが誤っていたため、修正しました。
Linux版Dropboxは異様にメモリを消費するので、バックアップ→Sync→Sync終了検知→Dropbox終了とスクリプトを組むのが良いと思われます。
Sync終了は以下のコマンドで検知できます。
# /usr/local/Python-2.6.2/bin/python ~/dropbox.py filestatus