第104回で簡単に触れたように、Windowsには「ジャンクション」と呼ばれるソフトリンクが存在する。ジャンクションを利用すれば、GUI操作では実現できないようなフォルダー構成を実現することも可能だ。そこで今回は、ハードリンクやソフトリンクの概要と、ジャンクションを利用した応用例を1つ紹介する。

「Windows 8.1ミニTips 第17回」より、2014年4月9日にリリースされたWindows 8.1 Updateを適用した環境を対象としています。

ハードリンクとソフトリンクとは

一般的なOSは、ファイルの実体となるデータ領域にアクセスするためのリンク機能を備えている。語弊はあるが単純にいうと、ファイルの実体そのものに複数の名称を付ける「ハードリンク」や、ファイルやディレクトリに対して別名のアクセス経路を設定する「ソフトリンク」に大別される。このうちハードリンクは、Windows NT 3.1時代からサポートしていた。

ソフトリンクに類するジャンクションやシンボリックリンクは、実装時期の相違や機能的な長短がある。そのため、古いアプリケーションでは誤認識するケースもあるので、あらかじめ注意してほしい。まずはジャンクションとシンボリックリンクの違いについて述べよう。

ジャンクションとシンボリックリンクの違い

ジャンクションはWindows 2000からサポートした機能で、一般ユーザーでも気軽に使用できる。一方のシンボリックリンクはWindows Vista以降でサポートし、相対パスや共有フォルダーのリンクも作成できるが、管理者権限が必要だ。いずれも「mklink」コマンドで作成できる。

ジャンクションやシンボリックリンクを作成する「mklink」コマンド。オプションで各リンクを作成する

ここで1つ例を紹介しよう。通常のコマンドプロンプトを起動し、ディレクトリ「foo」に対するシンボリックリンクを作成するため「mklink /d bar foo」と実行する。しかし、下図のように管理者権限が必要な旨を示すエラーメッセージが現れるだけだ。

一般ユーザー権限で実行する場合、「mklink /j bar foo」と実行してディレクトリジャンクションを作成しなければならない。もちろん管理者権限を持つコマンドプロンプトであれば、ディレクトリのシンボリックリンクは作成できる。

一般ユーザー権限ではファイルやディレクトリのシンボリックリンクは作成できない。その場合はオプション「/j」を使ってディレクトリのジャンクションを作成する

管理者権限が使える場合は、ディレクトリのシンボリックリンクも作成できる

ジャンクションとシンボリックリンクは視覚的にも相違点が多い。コマンド「dir」で確認すると、ジャンクションは「<JUNCTION>」、シンボリックリンクは「<SYMLINKD>」と現される(ファイルに対するシンボリックリンクは「<SYMLINK>」)。

「dir」コマンドで確認すると、ジャンクションやシンボリックリンクの違いを見て取れる

前回も述べたようにエクスプローラー上で開くと、一見しただけではジャンクションなのか、シンボリックリンクなのかも判断できない。だが、プロパティダイアログを確認するとシンボリックリンクに関しては「ショートカット」タブが加わる仕組みだ。

エクスプローラー上ではジャンクションとシンボリックリンクの違いは不明確だ。なお、アイコンは同じながらもショートカットファイルは種類が異なる

こちらはジャンクションで作成したリンクのプロパティダイアログ。詳しい情報は示されない

こちらはシンボリックリンクのプロパティダイアログ。「ショートカット」タブが加わるが、エクスプローラーは一般権限で動作しているため、各情報は編集できない

リンク機能でOneDriveフォルダーに加える

このような手順でジャンクションやシンボリックリンクを作成できるが、ポイントはその使い方である。例えば筆者は、普段の作業内容をドキュメントフォルダー下の特定フォルダーに格納しているが、困るのが外出先で作業を続行するケースだ。

もちろんOneDriveフォルダー(%USERPROFILE%\SkyDrive)下に作業フォルダーを移動させれば済む話だが、過去の資料などを含めると数百GB(ギガバイト)あっても足りず、ISPのアップロード制限も気になってしまう。

そこでおすすめしたいのが、作業中のフォルダーだけをOneDriveフォルダーのジャンクション/シンボリックリンクとして作成する方法だ。下図では「%USERPROFILE%\Documents\Work」フォルダーのジャンクションをOneDriveフォルダーに作成している。

「Win」+「X」キーを押して「コマンドプロンプト」をクリック/タップするか「C」キーを押す

ジャンクションターゲットがあるフォルダーに移動し、ジャンクションを作成する。画面の例では「mklink /j %USERPROFILE%\SkyDrive Work」と実行しているため、「ドキュメント\Work」フォルダーのジャンクションをOneDriveフォルダーに作成した

エクスプローラーでOneDriveフォルダーを確認すると、ディレクトリのジャンクションが作成できている

WebブラウザーでOneDriveにアクセスすると、Workのサブフォルダーもアップロードされたことを確認できる

ファイルの追加や更新時にはデータのアップロードが発生するため、ネットワークトラフィックは増加してしまうが、職場や自宅で作業中の内容を外出先でも編集したい方は試してみてほしい。

阿久津良和(Cactus)