2012年12月24日月曜日

SkyDriveで任意のフォルダを同期する方法

※ご注意: ここで紹介している方法はもう使えない可能性があります!(Windows8.1のSkyDriveがシンボリックリンクを認識して除外する動作になっています。)下記の記事は参考程度にご覧ください。

今までWindows Live Meshでドキュメントフォルダとデスクトップをクラウドにバックアップしていたんですが、Microsoftより「Windows Live Mesh終了するので、SkyDriveに移行してくださいね」という内容の、非常に丁寧で感じの良いご案内が来ました。

クラウドに同期するやり方は、いちいち外付けドライブをつないだり、LAN内にファイルサーバを立てたりせずに、勝手にバックグラウンドでバックアップできるので、非常に快適です。(時には、コンパイル中の中間ファイルをバックアップしようとして、ロックがかかってIDEと競合したりもしますが)

ところが、SkyDriveではローカル側の好きなフォルダを同期する設定ができません。
どこか一つにSkyDriveフォルダを作るのみです。
仕方がないので調べてみたところ、
SkyDriveフォルダ内にシンボリックリンクを張れば、うまくやれそう。

ということで、下記のようにしました。
mkdir %HOMEPATH%\SkyDrive\%COMPUTERNAME%
mklink /d %HOMEPATH%\SkyDrive\%COMPUTERNAME%\Documents %HOMEPATH%\Documents
mklink /d %HOMEPATH%\SkyDrive\%COMPUTERNAME%\Desktop %HOMEPATH%\Desktop
※mklinkは管理者権限が必要です。
コンピュータ名(%COMPUTERNAME%)のフォルダを作ってるのがミソです。
これで複数PCを同期してもグチャグチャになりません。

リンクを削除するときはrmdirでやります。
フォルダへのリンクをdelすると、実体が削除されてしまうそうです。
泣くに泣けません。

あとは、開発のワークディレクトリなどを、同期対象から除外しておきましょう。

これでドキュメントフォルダとデスクトップがクラウドに自動同期されます。
めでたしめでたし。