Dropbox

(更新:2017/10)Install on Ubuntu (新)
(更新:2011/05)Install on CentOS
(更新:2011/03)

よく使うファイルというものは本当によく使うので、置き場所が非常に悩ましい。そんな経験は皆さんもある筈。
仮に自宅のPCでしか使わないってなら別に悩まないのよ。適当にフォルダ掘って叩き込んどけば良い。しかしこれが帰省先や職場、移動中にスマートフォンで……何て考えると、やはり「いつでもどこでも」使えるオンラインストレージが欲しくなるわけで。

Dropboxは凄く良い。これまで一番痒かった所に手の届いた逸品。何はともあれクライアントには導入しておいて損は無いと思う。
WindowsでもMacでもiPhoneでもBlackBerryでもAndroidでも、兎に角色々なプラットフォームで利用できるので、個人利用の端末にばかすか導入しておく。

利用方法は至ってシンプル。「Dropbox」以下に、いつでもどこでも使いたいファイルを保存しておくだけ。オンラインになれば勝手にオンラインストレージと同期して、常に最新状態に保ってくれる。
更に以下のような利点もある。

  • 端末間で最新ファイルが競合した場合、差分ファイルを作って保管してくれる
    つまり端末Aと端末Bがあったとして、以下のような操作をした場合のこと。
    端末A(オフライン)で hoge.txt を更新、電源OFF → 端末Bで hoge.txt を更新、オンライン同期 → 端末Aをオンラインにする
    →結果、オンラインストレージはどちらの更新を有効にすれば良いのか判断できない
    そこで、競合のあったファイルの差分を取り、別名で両方とも保管してくれる機能。Subversionを知っている場合、collision(衝突)と言えば解るかな。ていうかDropboxの中身はSubversionだったりする。
  • 更新履歴が残っており、好きな更新時までファイルを復元できる
    これも中身がSubversionならではの恩恵。誤って更新したファイルなど、1つ前の更新に戻したりすることができる。
  • 一般公開フォルダ、Dropbox仲間との共有フォルダを持つことができる
    これはオンラインストレージならでは。他者アカウントが解っていれば一般公開、一部公開など自由自在。

Install on Ubuntu (新)

ヘッドレスインストールできるらしい。やってみよ。

$ cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
...
$ ls -1a
...
.dropbox-dist
...

なんかできた。

続いてデーモン実行。

$ ~/.dropbox-dist/dropboxd
...
このコンピュータは Dropbox アカウントにリンクされていません...
このデバイスをリンクするには、https://www.dropbox.com/cli_link_nonce?nonce=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX にアクセスしてください。
...
言われた通りアクセスしてみた。
...
このコンピュータは Dropbox にリンクされました。ようこそ、XXXX さん。

この状態から反応が無くなった。。。ように見えるけれど、今がんばって同期してるから邪魔しないでくれる? モードのようだ。心配になるのでそう言って欲しい。
コンソールを別に開いて、以下コマンドを打てばサイズがじわじわ増えているのがわかる。

$ watch du -s Dropbox/

ただ、終わってもコンソールは戻らない。どうやらデーモンのようだ。
取り敢えず Ctrl+c で終了して、管理スクリプトも提供されているので貰ってくる。

$ wget -O dropbox.py https://www.dropbox.com/download?dl=packages/dropbox.py
...

Pythonだったけれどpython3では動かないので python2.7 をインストール。

# apt-get install python2.7
...

スクリプトもそのように書き換えて。

$ chmod a+x dropbox.py
#!/usr/bin/python2.7

#### dropbox.py
...

環境もろもろ整えて起動。

$ ln -sf ~/Dropbox/bin ~/bin
$ mv dropbox.py ~/bin/
$ ~/bin/dropbox.py status
Dropbox isn't running!
$ ~/bin/dropbox.py start
...
$ ~/bin/dropbox.py status
開始中...

自動起動とかは良いや。

参考:
- Dropbox を Linux (CUI環境)で利用する [Tipsというかメモ]

Install on Ubuntu (旧)

apt-lineからパッケージインストールできる。楽ちん。

# aptitude install dropbox

自動起動されるので、後は画面に沿って初期設定。フォルダの場所もまあデフォルトのままで問題ないでしょう。
CUI環境の場合、インストール方法は以下の通り。

# aptitude install dropbox
$ sudo dropbox start
To link this computer to a dropbox account, visit the following url:
https://www.dropbox.com/cli_link?host_id=********************************

ここで別PCから上記URLへアクセス、ログインしてコンピュータアカウントを登録する。
続いて起動スクリプトの作成。Ubuntu用DropBox起動スクリプトを以下から取得、 /etc/init.d/dropbox として設置。更に以下の変数を修正する。
- DropBox起動公式スクリプト ubuntu用 — Gist

#### /etc/init.d/dropbox

...
DROPBOX_USERS="(Dropbox利用アカウント)"
...
# chmod +x /etc/init.d/dropbox
# /etc/init.d/dropbox start
# update-rc.d dropbox defaults

いじょ。ホームディレクトリ直下に Dropbox ディレクトリが出来る。

Install on CentOS

ここでは特にCUI環境へのインストールを紹介。RPMforgeにパッケージがあるので、yumリポジトリに追加しておくこと。
おもむろにインストール。

# yum install --enablerepo=rpmforge dropbox

しかるのちサービス設定。利用ユーザはLinuxアカウントのこと。

#### /etc/sysconfig/dropbox

DROPBOX_USERS="(利用ユーザ1)(利用ユーザ2)(...)"

すべからくサービス起動。

# /etc/init.d/dropbox start
このクライアントはアカウントにリンクされていません...
このマシンをリンクするには https://www.dropbox.com/cli_link?host_id=********************************&cl=ja を開いてください。

上記のようなメッセージがぞろぞろ出て来てウザいけど一旦無視して、他PCで良いので指定URLをブラウザで表示。ログイン、コンピュータのアカウントへのリンクまで終わるとCUI上では以下のようなメッセージが表示される。これで完了。

クライアントはリンクされました。hoge さん、ようこそ!

後は自動起動設定しとこう。

# chkconfig dropbox on

便利な使い方

個人的に便利だなーと思う使い方を示す。

仕事や私事で書き溜めたテキストファイルのチェックをする

テキストファイル程度ならスマートフォンでも閲覧できるので、PC上でざくざく書き溜めたテキストファイルをAndroid上でチェック。経験則なんだけど、ビューワが変わるだけでも結構意識を変えてチェックできるようになり、誤字脱字なんかはぽろぽろ見つけることができる。錯覚かしらん?
まあそうでなくとも、出勤帰宅などの移動時なんかにさくっとチェックできるのは昨今のスマートフォン事情とオンラインストレージならでは。一度お試しあれ。

.emacs.el directoryの端末間共有

WindowsでもEmacsは使える。Dropbox/emacs みたいなフォルダを掘り、設定用のemacs lisp filesを全部ぶち込む。 ~/.emacs なんてファイルももう旧弊なので、Dropbox/emacs/init.elとしてまとめてぶち込む。

で、Linuxの場合。単にシンボリック・リンクを貼るだけ。

$ cd
$ ln -sf ~/Dropbox/emacs .emacs.d

Windowsの場合はGNU Emacsの作業フォルダに .emacs.d の名前でジャンクションを貼る。Link Shell Extensionだとエクスプローラ上で作れるから便利。でも頭文字が . で始まるファイル名が作れないので、一旦適当な名前でジャンクションを作り、コマンドプロンプトで名前を変更する。
- Link Shell Extension

後はemacs lispの妙技。プラットフォームやEmacsのタイプなんかで読み込むlisp文の条件分岐をしてやり、UbuntuでもWindowsでもそのままのemacs lispで使えるようにしてやる。
具体的には、まずこんな感じの設定を init.el の頭の方に仕込んでやる。

(defvar run-unix
  (or (equal system-type 'gnu/linux)
      (equal system-type 'usg-unix-v)))
(defvar run-w32
  (and (null run-unix)
       (or (equal system-type 'windows-nt)
           (equal system-type 'ms-dos))))
(defvar run-emacs20
  (and (equal emacs-major-version 20)
       (null (featurep 'xemacs))))
(defvar run-emacs21
  (and (equal emacs-major-version 21)
       (null (featurep 'xemacs))))
(defvar run-meadow (featurep 'meadow))
(defvar run-meadow1 (and run-meadow run-emacs20))
(defvar run-meadow2 (and run-meadow run-emacs21))
(defvar run-xemacs (featurep 'xemacs))
(defvar run-xemacs-no-mule
  (and run-xemacs (not (featurep 'mule))))

それから例えばプラットフォームで読み込むlisp文を分ける場合、こんな書き方をしてやれば良い。

;; ロードパス追加
(cond
 (run-unix
  (setq load-path (append '("~/Dropbox/emacs") load-path))
  )
 (run-w32
  (setq load-path (append '("c:/Dropbox/My Dropbox/emacs") load-path))
  )
)

プラットフォームを気にせずEmacsが使えるとか……素敵すぐる……。

参考:
- GNU Emacsバージョンアップきた!もちろんWindowsにも対応