コマンドラインのみで Dropbox

遅ればせながらDropbox(Dropbox)、で、Linuxではどうすればいいのだろう。勿論サイトに Linux版もあるのだけど GUI操作が前提の様だ。コマンドラインだけの環境ではどうしたら良いのだろう。
この辺を参考にしてみた。

それからその「Dropbox for Linux」の頁。

Linux版の説明頁には Source からのインストールの項もあるのだけど結局 GUI操作が必要になる模様。

基本的な流れ

Dropboxのインストールは上記 GUI版では、オープンソース(GPL)のクライアントソフトをインストールする所から始まる。それが上記頁に挙げられているパッケージ。そしてその GUIクライアントの初回起動時に Web上のストレージとの同期を行うプロプライエタリなプログラムをダウンロードしてくる。という流れになってる模様。
GUI環境が無い場合の注意として、上記頁にはコマンドライン版(CLI)版の記述もある(What if I don't use Nautilus or X?、http://www.dropbox.com/download?dl=packages/dropbox.py)。上に挙げた Wiki に書かれた操作の一部をまとめたものの様だ。

全体的なこと

どうも全体的にみて、個人が一人で使うという想定の仕組みになっているような気がする。自動ダウンロードされるデーモンプログラム(やその補助類)、設定ファイルなんかはホームディレクトリ直下に配置される、.dropbox-dist, .dropbox とか。デーモンプログラムも上記 Pythonスクリプトでユーザ権限で実行する感じ。
まあ、ちょっとなんかすればマルチユーザで使う用のセッティングも出来るでしょう。

実行

Debian/GNU Linux (lenny) にて

  1. 上記 Pythonスクリプトをダウンロード
  2. python dropbox.py」
    • 下記ずっとユーザ権限での実行
    • コマンドのヘルプが返る、その示唆に従い
  3. python dropbox.py start」
    • Dropboxデーモン入ってない、「-i」オプション付けたら、といわれる
  4. python dropbox.py start -i」
    1. 「y」と答えるわけだ
    2. ダウンロード始まる、ちょっと掛かる
    3. 初回アカウント接続にはグラフィカル環境必要といわれる
      • それは無視せざるを得ない
      • ここではまだ .dropbox はできてない、.dropbox-dist にはいろいろ入ってる
  5. python dropbox.py start」
  6. python dropbox.py status」
    • Waiting to be linked to an account...
    • ずっとかわらない
  7. python dropbox.py stop」
  8. 「sqlite3 .dropbox/dropbox.db 'SELECT * FROM config;'」
    • なんか出てくる。host_id の値をメモる
  9. TextBasedLinuxInstall の示唆に従い host_id の値を Base64デコード
  10. どっか別のところから、普通のブラウザで下記にアクセス
    1. アカウントを訊かれたら登録済みのアカウントを答える
    2. そっちはもう忘れちゃっていい、けどまあ続き、Linux での接続を待ってもいいかな
    • その後試したがその儘 Linuxw3mブラウザでこの URLアクセスしたらアカウント登録出来た、これで本当にテキスト端末のみ。(この項翌日追記)
  11. 改めてインストール中の Linux で作業「mkdir Dropbox
  12. python dropbox.py start」
    • Start した後同期が始まる、適宜 status を見るとか

こんな感じ、適宜「python dropbox.py stop」する。必要なら /etc/init.d スクリプトとか作って自働起動にしてもいいか。その辺のヒントやサンプルスクリプトも上記リンク先にあります。

同期相手の識別はインストール時に発行される一意の HOSTID を使っているという事でしょうね。その HOSTID と登録アカウントの対応付けを最初に行う、普通は GUIクライアントから行うのだけど、Webからブラウザでも出来るのでそうする。

dropbox.py のヘルプ

Dropbox command-line interface

commands:

 status       get current status of the dropboxd
 help         provide help
 puburl       get public url of a file in your dropbox
 stop         stop dropboxd
 start        start dropboxd
 filestatus   get current sync status of one or more files
 ls           list directory contents with current sync status