Dropboxは、複数の環境でファイルを同期したり、特定のファイルだけ誰かに送ったり、バックアップにもなったりいろいろ便利で無くてはならない存在ですが、シンボリックリンク(ln -s)と「選択型同期」機能を使うと、イマイチ動作がよくわからなくなります。

シンボリックリンクを主に使うのは、gulpなどのタスクランナーのnode_modulesディレクトリー共有のため。
node_modulesディレクトリーは内包するファイル数がものすごいので、ファイルサイズ的にも、Dropboxの共有のパフォーマンス的にも、案件ごとに個別にもつのははばかられるため、オリジナルを一つだけもって、そこからそれぞれにシンボリックリンクを作ります。

追記
シンボリックリンクを作成しても、Dropboxには、オリジナルのファイルがコピーされて同期されてしまいます。
つまり、メインマシンのローカルでは、ファイル数の削減の意味があるものの、結局膨大な大量のファイルがアップロードされ、サブマシンにDropboxを同期すると、同じく大量のファイルをダウンロードする羽目になってしまいます。
サブマシンで同期する場合は、必要なプロジェクトのみを選択型同期するしかないようです。
展示会でDropboxのブースを覗いたときに聞いてみたところ、シンボリックリンクのような使い方は想定していないとのことでした。ignoreみたいな機能も、随分前から望まれているのに実装されていないので、諦めるしかないようです。

選択型同期とシンボリックリンクで起こる事件

  1. Dropboxフォルダー内に、シンボリックリンクを作成する
  2. Dropboxの「選択型同期」機能で、シンボリックリンクを共有適用外にする(チェックボックスをはすず)
  3. 同期が始まって、シンボリックリンクと一緒にオリジナルの方も消える
  4. 「選択型同期」で、もう一度チェックを付ける
  5. ファイルが復活するも、シンボリックリンクがあった場所にオリジナルが復元される

3のところで怖いと思うのが、Dropboxフォルダーの外にあるディレクトリーまで消えてしまうことです。
上記のnode_modulesの例では、node_modulesは、~/Documents/以下のディレクトリーにおいてありました。
復活する際にはオリジナルが復元されるため、せっかくシンボリックリンクにしたところにも、大量のファイルを抱えたnode_modulesディレクトリーができてしまいます。

現象はわかったんですが対処法がわかりません。
シンボリックリンク+選択型同期の組み合わせには触らないというのがベターなのかもしれません。


タグ:ノウハウ Webサービス