Windowsのリンク
ショートカット(ソフトリンク)
ファイル・フォルダのリンクとしてWindowsでは一般的な形式。
手軽な反面、問題も多い(特にプログラマにとっては)。
- ファイルの中にリンク先を記述したもの。
- ファイルでもフォルダでも可。
- オリジナルのファイルが削除されると無効になる。
- オリジナルのリネーム・移動されると無効になる。
(ただしDistributed Link Tracking サービスが有効であれば追跡されるので有効なまま) - ショートカットが削除されてもリンク先に影響はない。
- プログラムからアクセスする場合、ちょっと面倒。
- 拡張子はlnkでなければならない。
ハードリンク
ファイルに別名を付けたもの。あまり使われていない印象。
mklink /H リンク名 オリジナル名
- 参照カウントを持つ。
- 対象はファイルのみ。
- 異なるボリューム間のリンクは不可。
ジャンクション
制限つきのシンボリックリンクのようなもの。
Windows 2000以降(NTFS)に対応。
mklink /J リンク名 オリジナル名
- 対象はフォルダのみ。
- プログラムからも通常のフォルダのように扱うことができる。
- 異なるボリューム間のリンクが可能。
- ネットワーク間のリンクは不可。
- オリジナルのフォルダが削除・移動・リネームされるとリンクは無効になる。
- リンクの削除・移動・リネームはオリジナルに影響しない。
シンボリックリンク
Windows Vista以降に対応。
ファイルに対しては
mklink リンク名 オリジナル名
フォルダに対しては
mklink /D リンク名 オリジナル名
- ファイルでもフォルダでも可。
- プログラムからも通常のファイル・フォルダのように扱うことができる。
- ショートカットと違い、ファイルサイズは0。
- 異なるボリューム間のリンクが可能。
- ネットワーク間のリンクも可能。
- オリジナルのフォルダが削除・移動・リネームされるとリンクは無効になる。
- (少なくとも自分の環境では)オリジナルのファイルが移動・リネームされてもリンクは有効なまま。
- リンクの削除・移動・リネームはオリジナルに影響しない。
リンクの解説、いいですね。
存在こそしっていたものの、ショートカット以外使ったことがありません。
Vista以降ではショートカットよりもシンボリックリンクの方が一般的なのでしょうか??
フォルダ階層を走査するようなプログラムを書くときは、
いろいろ考慮するべきポイントが多そうですね。
上位のフォルダへのシンボリックリンクを下位のフォルダ中に持つと、
単純に書くと永久ループになるのかなぁ・・・?など。
sikiosさん(でいいのかな??)が各リンクをどういうケースで使い分けているかを解説してくれたらありがたいです。
あと素朴な疑問ですが、ハードリンク、シンボリックリンクはコマンドラインから作るしかないのですか??
(簡単に調べられそうな質問で申し訳ないですが・・)
あ、名前・・・reiってことで。
Vista以降でもやっぱりショートカットが一般的なようです。
エクスプローラでショートカットは作れてもシンボリックリンクは作れませんし。
>上位のフォルダへのシンボリックリンクを下位のフォルダ中に持つと、
>単純に書くと永久ループになるのかなぁ・・・?など。
試してませんがそうなると思います。
ハードリンクは、よく利用するdllや巨大なデータを複数のフォルダ内で管理したい、みたいな場面で使えると思います。使ったことはありませんが。
ジャンクションはRamdiskに使用していました。(詳細は省略)
あとは、システムでないドライブにインストールしたアプリケーションを、あたかもシステムドライブにあるように振舞わせたりできます。
>あと素朴な疑問ですが、ハードリンク、シンボリックリンクはコマンドラインから作るしかないのですか??
GUIアプリケーションも探せばあると思いますが、自分は知りません。
エクスプローラで作れてもいいと思うんですけどね。
なるほど、解説ありがとうございます。
有用なものは使いやすい状態にしておいてほしいですね。
(有用さをどのように評価するのか微妙ですが・・・)
下手をすると単なるプログラマ泣かせということに??