LinuxにDropboxをインストールした(GUI無し)
Windows PC間では、Dropboxでファイル共有しています。
どれか1台でファイルを更新すると、自動的に他のPCにも同様に反映されるので大変楽チンです。
(日本語解説はこのあたりの記事をどうぞ→Dropbox徹底解剖 - 一度使ったら手放せなくなる! オンラインストレージサービスの本命)
● NetWalkerでも使いたいけど対応していない
Windows,Linux,MacOSX,iPhoneに対応しています。
で、NetWalkerでも使いたい!と思っているのですが、Linux版はx86用しかなくて、Arm(NetWalkerのCPU)用はありません。
Dropbox競合する他社サービス(SugarSyncとか)でも同じような感じで、Arm対応してるのはないなあ。
● 自作するか?
じゃあ、自作しようなあともちょっと思った。
こういうソフトで肝は、ファイル更新の検出だと思うけど、この辺でどうにかできそう。
・Windwos → ReadDirectoryChangesW ディレクトリの監視APIを使えばファイル更新を検出できる。
・Linux → notify API を利用する(ファイルシステムイベントを監視するための機構) ※実装されてない環境がまだ多い
● まあおちつけ
こんな記事を見つけた。
→lsyncd(+rsync)で複数サーバ間のファイルを自動で同期する - うまい棒blog
Linux間でファイルを自動で同期してくれるらしい。
ということは、x86なLinuxサーバにDropboxをインストールして、NetWalkerそこと同期すれば間接的にDropboxと同期したことになるんじゃないかな。
● x86なLinuxサーバにDropboxをインストールしよう
Web用に動かしているLinuxサーバは、x86系CPU(Core2duo)なのでDropboxも動くはず。
でも、Xいれてないよ。
と、おもって調べたらこんな記事を見つけました。
→GUIの無いLinux(CentOS)にDropboxをインストールする - インフラメンコ
まさに求めていた内容。
(公式の解説はこちら→TipsAndTricks/TextBasedLinuxInstall - Dropbox Wiki)
● インストール開始
詳しくは、リンク先の記事をみてね。
以下は補足/蛇足
うちの環境
$ cat /etc/redhat-release
CentOS release 5.3 (Final)
$ uname -s -r -v -m -p -i -o
Linux 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386 GNU/Linux
・『Pythonをインストールする』
ソースからPythonをインストールする(2.6.2)
※ 事前に、sqliteをインストールしておこう。
※ yum install sqlite.i386
※ yum install sqlite-devel.i386
( 参照元)
# 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
僕の環境ではmakeのあと、以下のエラーが出たけど無視して大丈夫みたいだ・・・
Failed to find the necessary bits to build these modules:
_bsddb _curses _curses_panel
_hashlib _sqlite3 _ssl
_tkinter bsddb185 bz2
dbm gdbm readline
sunaudiodev zlib
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
・『必要なファイルをダウンロード、バイナリを展開』
以下を実行
( 参照元)
# 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
※ ホームディレクトリで作業すること
※ ホームディレクトリに、インストール用のスクリプトファイル(.py)がおかれて邪魔だけど終わったら消してもいいかな
※ 最終的に必要そうなファイル/ディレクトリは・・・
dropbox.py Dropbox操作用のスクリプト
.dropbox Dropboxの同期用DBがはいってる
.dropbox-dist プログラム本体(バイナリ)がはいってる
dbreadconfig.py 設定取得用スクリプト ※消していいかも
dbmakefakelib.py 最初の生成用スクリプト ※消していいかも
※ 共有するファイルは、次の手順で「Dropbox」ディレクトリを作る
・『Dropbox動作環境の準備』
# /usr/local/Python-2.6.2/bin/python ~/dbmakefakelib.pyこれで、仮GUIライブラリが作成されるそうです。
ただ、いつまでたってもおわりません。
「dropboxd ran for 15 seconds without quitting - success?」
とか出ますが終わりません。
なんか生成おわてっるぽいんですけどね・・・
数分待てばできてるようです。
# /usr/local/Python-2.6.2/bin/python ~/dbreadconfig.pyで、host_idが表示されるはず・・・ですが、以下のエラーが出たら、PythonにSQLiteのモジュールが入ってません。Pythonをビルドするときに先にSQlite(Devel)がちゃんといれとかないとダメみたいです。yum install sqlite-devel.i386 してから、Pythonビルドしなおしてください。
$ /usr/local/Python-2.6.2/bin/python ~/dbreadconfig.py
Traceback (most recent call last):
File "/home/fukaya/dbreadconfig.py", line 1, in
import ctypes, base64, pickle, sqlite3, os
File "/usr/local/Python-2.6.2/lib/python2.6/sqlite3/__init__.py", line 24, in
from dbapi2 import *
File "/usr/local/Python-2.6.2/lib/python2.6/sqlite3/dbapi2.py", line 27, in
from _sqlite3 import *
ImportError: No module named _sqlite3
host_idが表示されたらブラウザで、『https://www.getdropbox.com/cli_link?host_id=<host_id>』 のURLを開くとホストとして登録されます。
・『Dropboxの起動』
で、共有ファイルを置くディレクトリを作って
# mkdir ~/Dropbox
↓で起動します。
( 参照元)
# ~/.dropbox-dist/dropboxd &
ファイルのダウンロード状況を見るには以下のようにします。
※ 同期完了すると「Idle」となります。
$ /usr/local/Python-2.6.2/bin/python ~/dropbox.py status
Downloading 110 files (429.7 KB/sec, 16 min left)
フォルダごとの同期状態は以下のようにして見られます。
$ /usr/local/Python-2.6.2/bin/python ~/dropbox.py filestatus
share: up to date ※ 同期完了
.dropbox: unwatched ※ 同期対象外
Public: syncing ※ 同期中
1Gbyte程度のデータを共有していましたが、1時間かからず同期が完了しました。
あとは、更新されるたびにLinuxサーバにも同期されるはずです。
現状は常駐は手動で起動しておこなっているので、デーモン化する場合はリンク先の解説を参照してください。
次回は、NetWalkerとの同期についてやってみます。
/
(追記)
公式のスクリプトを使ったみた。
→How To Install Dropbox In An Entirely Text Based Linux Environment
「init.d sample for Fedora/RedHat below: 」って書いてあるすぐしたのスクリプトを利用。
以下のようにして新規作成で編集
# vi /etc/init.d/dropbox
スクリプトをコピペしたあと2箇所編集する
1.スクリプト先頭のユーザーリスト「DROPBOX_USERS="user1 user2"」の「user1」とか「user2」は、実際のユーザーに合わせて変更
2.最初のほうに以下の2行を追加(これで、chkconfigで登録できるようになる)
# chkconfig: 2345 35 35
# description: dropbox
実行権限をつける
# chmod +x /etc/init.d/dropbox
↓で起動する・・・かな。たぶんしない。
# service dropbox start
たぶんCentOSだと「start-stop-daemon」がないって怒られる。
Ubuntuにしかないみたい。
自作プログラムをデーモンにするの記事によると、Cの実装があるのでダウンロードしてコンパイルすればいい。
下の手順でOK
# wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
# tar xvzf apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
# cd apps/sys-utils/start-stop-daemon-IR1_9_18-2/
# gcc start-stop-daemon.c -o start-stop-daemon
# cp start-stop-daemon /usr/bin/
これで
# service dropbox start
で、dropboxが開始される。