パスワードを忘れた? アカウント作成
152360 journal

fslashtの日記: LinuxにDropboxをインストールした(GUI無し) 4

日記 by fslasht

 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をインストールする - インフラメンコ

 まさに求めていた内容。

● インストール開始

 詳しくは、リンク先の記事をみてね。
 以下は補足/蛇足

 うちの環境
$ 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 &

参照元

ファイルのダウンロード状況を見るには以下のようにします。

$ /usr/local/Python-2.6.2/bin/python ~/dropbox.py status
Downloading 110 files (429.7 KB/sec, 16 min left)

※ 同期完了すると「Idle」となります。

フォルダごとの同期状態は以下のようにして見られます。

$ /usr/local/Python-2.6.2/bin/python ~/dropbox.py filestatus
share: up to date ※ 同期完了
.dropbox: unwatched  ※ 同期対象外
Public: syncing   ※ 同期中

 1Gbyte程度のデータを共有していましたが、1時間かからず同期が完了しました。
 あとは、更新されるたびにLinuxサーバにも同期されるはずです。
 現状は常駐は手動で起動しておこなっているので、デーモン化する場合はリンク先の解説を参照してください。

 次回は、NetWalkerとの同期についてやってみます。

/
(追記)

● DropBoxを自動起動にする

 公式のスクリプトを使ったみた。
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が開始される。

以下のようにすれば、自動起動するようになる
# chkconfig --add dropbox

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...