Dropbox をなめてました

私は「とあるサイト」でメールに Thunderbird を使っているのですが、ときどき事故でメールフォルダを失うことが多く、泣けること多々でした。Dropbox 上にメールフォルダを置けば良いのでしょうが、Thunderbird (Netscape) のメールは、メールフォルダ(inbox など)が単一のでかいファイルとインデックスファイルで管理されていて、これを Dropbox で管理すると、新しいメールが着くたびにファイル全体が Dropbox に転送されて大変なことになるのではないかと思い込んでました。
今日、実験をしてみました。まずは、ローカル PC の Dropbox フォルダに 100MB のランダムデータを置きます。この同期には、やはり数分かかります。
さて、ここでローカルファイルの末尾にデータを追加してみました。具体的には、シェルで >> でデータを追加してみました。私はここで数分の時間がかかると信じていたのですが、、、結果は数秒で同期が終わりました。おー、Dropbox ってファイル I/O をちゃんと監視しているんだー。
次に、さすがに lseek() はダメだろうと思い、lseek(fd, 0, SEEK_SET) して、ファイル先頭を数バイト書き換えてみました。。。
なんとそれでも、Dropbox はファイルの同期を数秒で終わらせてきました。むむむ、ちゃんと lseek() にも対応している!!
おまけに、ファイルの履歴もちゃんと更新しています。つまり、古いファイルを取り出すことも可能です。
Dropbox、私の想像以上に強者のツールのようです。よしよし、Thunderbird のメールフォルダにしてやろう!

後記

  • ちなみに、Mac OS X での場合です。今度、Windows でも実験してみます。
  • しかし、何かトランザクションがエラー終了した場合はどうするんだろう。ときどき、セキュアハッシュでも計算しているんだろうか。