NYAGOS保守ノート:DropBoxの共有ファイルをVMの共有フォルダー越しに ls すると、意図せずダウンロードが発生する

症状

DropBox のフォルダーを \\vmware-host\Shared Folders\経由で VM から参照できるようにすると、仮想マシン内の nyagos で ls -F もしくは ls -lした時、表示対象になったファイルがオンラインにしかない場合、スマートシンク機能が動作して自動ダウンロードが動き始めてしまう。ホストからだと、そういう動作はない。

原因

オンラインにしかないファイルにはリパースポイントフラグがたっており、そのリンク先を参照する動作(os.Readlink)が「ファイルオープン」としてホスト側に伝わってしまうからのようだ。

対応

ls -F

リパースポイントがついたファイルが実際にシンボリックリンクかどうかを判別するために os.Readlink を呼ぶ動作があった。ls -F はデフォルトのlsエイリアスでくっつけて動作することが多く、脊髄反射でやってしまうこともあり、意識して使わないようにすることが難しい。

なので、ls -F でリンク先を読む動作は廃止し、リパースポイントフラグで常に @ マークをつけるようにした(@ はそういう仕様ということにする)

ls -l

ls -l ではリンク先を出力する。迷ったあげく現状維持にした。

実は VM内のエクスプローラーで共有フォルダーを参照した時も、DropBox はダウンロードをはじめてしまう。おそらく、アイコンを読む際にファイルオープンしてしまうのだろう。

そこで「エクスプローラーで無理なら、ls も無理だよね。脊髄反射ls -l しないよう気をつけよう」という方針にしたわけだ。