dropbox-api インストール

前回のメモでは書ききれなかった FreeBSD 8.3 に ports コレクションの dropbox-api を入れる経過について書いておきます。

今回は、pkg_add ではなく、make によりインストールすることにしました。

# cd /usr/ports/net/dropbox-api-command/
# make install clean
> pkg_info|grep Dropbox
dropbox-api-command-1.05,1 Dropbox API wrapper command
p5-WebService-Dropbox-1.09 Perl interface to Dropbox API

他サイトの情報には、この他にも「p5-Net-Dropbox-API-1.8」が必要と書いてありましたが、無くても動くようです。
dropbox-api は perl スクリプトで書かれたユーティリティなので過去に古いperl5を使用していた場合、perl モジュールが、/usr/local/lib/perl5/site_perl/, /usr/local/lib/perl5/ 下の異なるバージョンのディレクトリ下に入っている場合があります。この場合、pkg_info では必要なperlモジュールがインストール済みに見えますが、異なるバージョンのディレクトリにインストールされているためperlエラーが出ます。
この場合は、portmaster コマンドを使ってメンテナンスする必要がありました。perl5.12 から perl5.16 にアップグレードした場合は、こんな感じ。

# portmaster -o lang/perl5.16 lang/perl5.12
# portmaster p5-

次に、Webブラウザーから dropbox.com へアクセスして、API key を入手する必要があります。

  1. dropbox サイトの「その他」メニューから、「開発者」を選んでディベロッパーサイトを開く。
  2. 「MyApps」メニューでライセンスに同意して先に進み、APIキーを入手する。入手したキーは後からいつでも参照出来るので、メモしておく必要はありません。
  3. キーを入手したなら、次はFreeBSD に戻って、「dropbox-api setup」とタイプ。
  4. API Key と API Secret を入力したら、Dropbox内の一つのフォルダーだけを共有するか全部のフォルダーをアクセス出来るようにするかを尋ねてくるので、f を入力してフルアクセスを選択。
  5. 次に表示されるURLを Dropbox を開いているブラウザーにコピーして開いて、承認するとFreeBSDからDropbox をアクセス出来るようになります。
  6. 最後にFreeBSDに戻って、Enter を叩く。以後、dropbox-api コマンドを使ってDropboxサーバー上のファイルを操作出来るようになります。
  7. 入力した情報は、$HOME/.dropbox-api-config に保存されています。
Please Input API Key: 1234567
Please Input API Secret: 987654321
Please Input Access type
 a ... App folder - Your app only needs access to a single folder within the user's Dropbox
 f ... Full Dropbox - Your app needs access to the user's entire Dropbox
[a or f]: f
URL: https://www.dropbox.com/1/oauth/authorize?oauth_token=sefggcaoddw3ox&oauth_callback=
Please Access URL and press Enter

前のメモにも書きましたが、dropbox-api は自動的にサーバーとHDDを同期するためのツールではないので、Dropbox上のファイルを持ってきたり、Dropboxへコピーしたくなった場合に、ユーザー自身が dropbox-api コマンドを使って同期する必要があります。

dropbox-api コマンドの使い方は、「dropbox-api help」で表示されれます。

> dropbox-api help
Usage: dropbox-api <command> [args] [options]
Available commands:
setup get access_key and access_secret
 ls list directory contents
 find walk a file hierarchy
 cp copy file or directory
 mv move file or directory
 mkdir make directory (Create intermediate directories as required)
 rm remove file or directory (Attempt to remove the file hierarchy rooted in each file argument)
 put upload file
 get download file
 sync sync directory (local => dropbox or dropbox => local)
 uid get accound uid
See 'dropbox-api help <command>' for more information on a specific command.

最初に、Dropbox 上のファイルを全てHDDにコピーしたい場合、

> mkdir ~/Dropbox
> dropbox-api sync dropbox:/ ~/Dropbox/ -v

とすればいい。-v は経過表示なので無くてもいい。
コマンド発行前にLANGパラメータをちゃんと設定しておけば日本語ファイル名もちゃんと使えます。

> setenv LANG ja_JP.UTF-8
> dropbox-api ls
d - Thu, 11 Aug 2011 01:02:04 +0000 /Public
d - Mon, 25 Jun 2012 07:21:56 +0000 /カメラアップロード
- 231991 Tue, 31 Jan 2012 08:21:38 +0000 /はじめに.pdf

問題点もあります。

  1. 今のところ、Web proxyサーバーの指定方法がわかっていない。
  2. 同一ネットワーク上にDropboxクライアントがあっても、ファイル同期はDropbox サーバーとの間で行うことになるので効率は悪い。
  3. Dropboxサーバーとの転送速度があまりよくない。最高でも500kB/secくらいしか出ない。

逆に、PC版にはない特徴もある。

  • コピーするフォルダー(ディレクトリ)を限定しない。PC用は自動同期されるため同期フォルダーが固定されていますが、dropbox-api はコマンドの中で同期先を指定出来ます。従って、アクセス権さえあれば、ホームディレクトリ以外の場所と同期出来ます。

使い方としては、深夜の時間帯とか30分毎とかにDropboxサーバーの内容をcronでFreeBSD HDD方向にコピーすることを予定しているので、この dropbox-api コマンドは使えそうです。

コメントを残す