シンボリックリンク

Unix系OSファイルシステムは大抵がハードリンクやシンボリックリンクをサポートしている。だが、現代のWindowsで標準的なファイルシステムであるNTFSでもそれらをサポートしていることは知られていない。シンボリックリンクではなくジャンクションという用語になっているが、この用語を知っている人がWindowsユーザの内で数パーセントもいないであろうことは容易に想像できる。
WindowsXPでハードリンクを作るにはfsutilコマンドで可能だ。(Windows2000とかにも有るらしい。)例えばbar.txtにfoo.txtというハードリンクを作るには以下のように入力すればよい。

C:\>fsutil hardlink create foo.txt bar.txt

あるいは、GNUのfileutilsを導入しているならば、その中のlnコマンドを使うという方法もある。

C:\>ln bar.txt foo.txt

ところが、NTFSそのものには機能があるにもかかわらずジャンクションを実現するツールはWindowsXPに含まれていない。有志が作成している専用ツールがフリーソフトとしていくつか存在するのでそれらを導入するしかない。ちなみにlnコマンドでは-sオプションをつければシンボリックリンクになることになっているが、WindowsXP上では単なるコピーをしてしまうようだ。推測ではあるがシンボリックリンクとジャンクションの挙動に若干の違いがあって、全面的に同じと見做してしまうと不都合があるためにあえてそのような仕様にしているのではないかと考えている。
Windowsの次期バージョンであるVistaではこれらの機構に見直しが加えられ、ジャンクションを行うコマンドも標準的に添付されることになっているそうなので、複雑なファイル管理の整理が楽になると期待できる。そもそも複雑にしないのが最善だとわかってはいるが、そう簡単に割切れないのが現実というものなわけで。
Document ID: 03d44053da6dff9fe81d2800f577cc42